ICode9

精准搜索请尝试: 精确搜索
  • Python | 面试的常客,经典的生产消费者模式2021-10-03 21:02:18

    今天是Python专题的第23篇文章,我们来聊聊关于多线程的一个经典设计模式。   在之前的文章当中我们曾经说道,在多线程并发的场景当中,如果我们需要感知线程之间的状态,交换线程之间的信息是一件非常复杂和困难的事情。因为我们没有更高级的系统权限,也没有上帝视角,很难知道目前运行的

  • leetcode 239 滑动窗口最大值2021-10-03 19:33:48

    不大会做,一看题解果然要用到别的数据结构。第一种方法用的是优先队列,也就是大顶堆。其中一个很好的想法是,在滑动窗口移动的时候,添加后方的元素,但是不着急删除前一个元素。而在判断最大值时,如果最大值所在的索引不在窗口内,则弹出该最大值,并重复这一段操作,直到当前最大值在窗口内。

  • 【学习笔记】解决最少步数问题,献祭bfs大杀器(力扣C++代码)2021-10-01 19:02:07

    bfs解决最短步数问题 前置知识 队列:一种先进先出,队头出队,队尾入队的数据结构。广度优先搜索(bfs):每次从队列中取出一个节点,将该节点相邻的未搜索的节点加入队列中,循环上述过程,这就是广度优先搜索。图:由顶点和边相互连接形成的数据结构。邻接矩阵:用来表示顶点之间的连通状态的

  • 【学习笔记】队列、单调队列、循环队列,你了解多少?(C语言实现)2021-09-27 11:59:21

    队列 基本概念 队列是一种先进先出(FIFO)的数据结构。对于队列来说,表尾端称为队尾(tail),表头端称为队头(front)。所有元素只能从队尾进入,进入队列的操作称为入队。同时所有元素只能从队头弹出,弹出队列的操作称为出队。因为只能对队头或队尾元素进行操作,因此不支持对队列内元素进行

  • leetcode 腐烂的橘子2021-09-27 09:31:44

    994. 腐烂的橘子 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。 返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。

  • JZ22从上到下打印二叉树2021-09-26 16:33:10

      思路 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: vector<int> PrintFromTopToBottom(TreeNod

  • noip模拟59(待补)2021-09-23 21:35:59

    A. 柱状图 B. 应急棍 C. 擒敌拳 考场上测试点分治切了,单调队列 \(+\) 斜率优化. 每次枚举队列里的所有元素就行了. 正解是李超线段树. C_code #include<bits/stdc++.h> using namespace std; namespace BSS { #define ll long long int #define ull unsigned ll #define lf do

  • ⭐算法入门⭐《栈 和 队列》简单02 —— LeetCode 225. 用队列实现栈2021-09-22 22:04:27

    文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、本题小知识四、加群须知 一、题目 1、题目描述   请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现

  • 最短路算法总结2021-09-20 10:34:25

    最短路算法总结 一、目录 1.Floyd(n^3) n:点数 2.dijikstra( n^2 -> mlogn) n:点数 m:边数 (不理解复杂度) 3.bellman-ford(nm) n: 点数 m:边数 4.spfa(Km) K:约为2的常数 m:边数 5.Johnson (nmlogm) (不理解复杂度) 二、实现的代码 1.floyd 全源最短路(可以解决负权边,但不能解决负权

  • leetcode 二叉树的右视图 中等2021-09-16 22:33:38

        ① bfs 层序遍历:记录每一层的最后一个节点即可 ② dfs,与先序遍历相反,先遍历右节点,这样就是当前层次第一个出现的数就是最右边的数。 // bfs 代码 class Solution { public: vector<int> rightSideView(TreeNode* root) { vector<int> ret; queue<pair

  • 546-C++线程间的同步通信(生产者-消费者模型)2021-09-11 20:32:59

    多线程编程两个问题 1.线程间的互斥 多线程运行时存在竟态条件 =》 临界区代码段 =》 保证其原子操作 =》添加互斥锁mutex 轻量级的无锁实现CAS 在linux中执行 strace ./a.out mutex命令跟踪程序 =>发现底层是用 pthread_mutex_t 2.线程间的同步通信 (线程间不通信的话,每个线

  • 6、queue容器2021-09-11 12:30:41

    queue<int>que; que.push() que.pop() que.front() que.back() que.empty() que.size() ------------------------------------ queue:先进先出 只允许从一端新增数据,一端移除数据 队列不允许遍历,只有队头队尾 ____________________ push(elem)         pop()  front()

  • 【C语言】栈和队列2021-09-07 19:30:31

    文中代码基本都是由C语言实现,除了“2.3.4 Leetcode496”的代码实现。 1.队列 1.1 队列的性质 FIFO:Fist In, First Out,即先进先出。 队首出队,队尾出队。 1.2 普通队列 1.2.1 普通队列的代码实现 #include <stdio.h> #include <stdlib.h> #include <time.h> //普通队列,存在假

  • 刷题-力扣-637. 二叉树的层平均值2021-09-05 16:33:21

    637. 二叉树的层平均值 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目描述 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 示例 1:

  • 011:编程填空:前K大的偶数2021-09-05 10:59:51

    描述 输入n个整数,输出整数数列中大小排名前k的偶数   #include <algorithm> #include <iostream> #include <stack> #include <queue> #include <vector> #include <cstring> #include <cstdlib> #include <string> #include <map> #include

  • (四)万能的搜索 —— 3. 广度优先搜索2021-09-05 09:30:46

    3. 广度优先搜索 广度优先搜索(Breadth First Search,BFS),也称为宽度优先搜索。 还是用一个二维数组来存储上一小节的迷宫。 最开始的时候小哼在迷宫(1,1)处,他可以往右走或者往下走。 在上一节中我们的方法是,先让小哼往右边走,然后一直尝试下去,直到走不通的时候再回到这里。这样

  • ICPC2020 SWERC Jogging(最短路+思维)2021-09-03 23:57:47

    题目链接 大意: 一个人从 0 0 0 点出发,每次跑步都想有之前没走过的街道(边),但是不一定走完这条街。并且每次跑步都要有路径长度的范围 (

  • LeetCode 199.二叉树的右视图(DFS和层序遍历 通俗易懂)2021-09-03 22:34:38

    题目描述: 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 一、DFS实现 思路: 从根部开始向右搜索,定义一个step表示层数,从0开始,再定义一个vector容器res储存每一层的最右边

  • leetcode 二叉树的锯齿形层序遍历2021-08-25 14:32:44

    103. 二叉树的锯齿形层序遍历 给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 返回锯齿形层序遍历如下: [ [3], [20,9], [15,7] ] 来源:力扣(LeetCode) 链接

  • 最短路径三种解法2021-08-25 08:00:33

    基础最短路模板: 有 n 个人,他们的编号为 1~n,其中有一些人相互认识,现在 x 想要认识 y,可以通过他所认识的人来认识更多的人 (如果 x 认识 y、y 认识 z,那么 x 可以通过 y 来认识 z),求出 x 最少需要通过多少人才能认识 y。 【输入格式】 第 1 行 3 个整数 n、x、y,n≤100,1≤x、y≤n。 接

  • Loj3460【USACO 2021.1 P】T2. Minimum Cost Paths2021-08-19 20:35:55

    【USACO 2021.1 P】T2. Minimum Cost Paths 题目链接 题目大意 一个 \(N \times M\) 的矩阵( \(2 \le N \le 10^9\) , \(2 \le M \le 2 \times 10^5\) ),走第 \(x\) 行距离为 \(x^2\) , 走第 \(y\) 列距离为 \(c_y\) , 问从 \(\left( 1,1 \right)\) 到 \(x , y\) 的最短距离,多组询问。

  • leetcode 课程表 中等2021-08-16 23:04:17

          拓扑。 存 prerequisties[1] 到 prerequisties[0] 的边,然后记录入度。 用队列来进行拓扑,边对应终点入度- 1,入度为 0 时,加入队列。 最后判断每个点是否入度为 0 即可。 class Solution { public: bool canFinish(int numCourses, vector<vector<int>>& prerequisit

  • 剑指 Offer 32 - II. 从上到下打印二叉树 II(简单)2021-08-15 12:00:06

    通过率 68.5% 题目链接 题目描述: 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7]] 提示: 节点总数 <= 1000 思路: 这

  • leetcode 二叉搜索树层序遍历 中等2021-08-10 20:35:46

        BFS,没啥好说的。 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> ret; queue<pair<TreeNode*, int>> que; // TreeNode*, depth if(root) que.push({r

  • Sliding Window - 题解【单调队列】2021-08-10 01:03:25

    题面: An array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves rightwards by one p

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有