上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 67 下一页
摘要: 为了动态维护中位数,我们可以建立两个二叉堆:一个小根堆、一个大根堆。 在依次读入这个整数序列的过程中,设当前序列长度为M,我们始终保持: 序列中从小到大排名为1 ~ M/2的整数存储在大根堆中; 序列中从小到大排名为M/2+1 ~ M的整数存储在小根堆中, 大根堆允许存储的元素最多比小根堆多一个。 阅读全文
posted @ 2021-07-26 21:26 Dazzling! 阅读(36) 评论(0) 推荐(0)
摘要: 法一 我们用一个大根堆实时维护数组的前 k 小值。首先将前 k 个数插入大根堆中,随后从第 k+1 个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可。 class Solution { public: vector<i 阅读全文
posted @ 2021-07-26 19:21 Dazzling! 阅读(46) 评论(0) 推荐(0)
摘要: 根据二叉搜索树的定义,可以通过递归,判断所有子树的正确性 (即其后序遍历是否满足二叉搜索树的定义) ,若所有子树都正确,则此序列为二叉搜索树的后序遍历。 终止条件: 当 \(l \geq r\) ,说明此子树节点数量小于等于$1$,返回 true ; 划分左右子树: 遍历后序遍历的 \([l, r] 阅读全文
posted @ 2021-07-25 22:07 Dazzling! 阅读(26) 评论(0) 推荐(0)
摘要: 将根节点插入队列中; 创建一个新队列,用来按顺序保存下一层的所有子节点; 对于当前队列中的所有节点,按顺序依次将儿子插入新队列; 按从左到右、从右到左的顺序交替保存队列中节点的值; 重复步骤2-4,直到队列为空为止。 /** * Definition for a binary tree node. 阅读全文
posted @ 2021-07-23 21:20 Dazzling! 阅读(23) 评论(0) 推荐(0)
摘要: 我们可以用广度优先搜索解决这个问题。 我们可以想到最朴素的方法是用一个二元组 (node, level) 来表示状态,它表示某个节点和它所在的层数,每个新进队列的节点的 level 值都是父亲节点的 level 值加一。最后根据每个点的 level 对点进行分类,分类的时候我们可以利用哈希表,维护一 阅读全文
posted @ 2021-07-23 16:15 Dazzling! 阅读(30) 评论(0) 推荐(0)
摘要: BFS。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NUL 阅读全文
posted @ 2021-07-23 15:58 Dazzling! 阅读(30) 评论(0) 推荐(0)
摘要: 思路 所有的元素一定是按顺序 push 进去的,重要的是怎么 pop 出来? 假设当前栈顶元素值为 2,同时对应的 popped 序列中下一个要 pop 的值也为 2,那就必须立刻把这个值 pop 出来。因为之后的 push 都会让栈顶元素变成不同于 2 的其他值,这样再 pop 出来的数 popp 阅读全文
posted @ 2021-07-23 15:47 Dazzling! 阅读(24) 评论(0) 推荐(0)
摘要: 单调栈。 class MinStack { public: stack<int> stk, minstk; /** initialize your data structure here. */ MinStack() { } void push(int x) { stk.push(x); if (m 阅读全文
posted @ 2021-07-23 15:32 Dazzling! 阅读(25) 评论(0) 推荐(0)
摘要: 可以模拟螺旋矩阵的路径。初始位置是矩阵的左上角,初始方向是向右,当路径超出界限或者进入之前访问过的位置时,顺时针旋转,进入下一个方向。 判断路径是否进入之前访问过的位置需要使用一个与输入矩阵大小相同的辅助矩阵 visited,其中的每个元素表示该位置是否被访问过。当一个元素被访问时,将 visite 阅读全文
posted @ 2021-07-23 15:20 Dazzling! 阅读(128) 评论(0) 推荐(0)
摘要: 如果一个树的左子树与右子树镜像对称,那么这个树是对称的。 因此,该问题可以转化为:两个树在什么情况下互为镜像? 如果同时满足下面的条件,两个树互为镜像: 它们的两个根结点具有相同的值 每个树的右子树都与另一个树的左子树镜像对称 我们可以实现这样一个递归函数,通过「同步移动」两个指针的方法来遍历这棵树 阅读全文
posted @ 2021-07-23 12:56 Dazzling! 阅读(31) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 67 下一页