摘要: 仅供自己学习 思路: 因为要找到后续元素大于当前元素的位置,那么就具有滞后性,我们需要保存当前元素的位置,然后再往后找更大的元素。 对栈的用法如下; 我们正向遍历T数组,如果栈空那么我们肯定得先加入元素。 循环判断当前遍历到的元素和栈顶元素的大小,如果大于那么就把 当前元素的位置-栈顶存放的位置 的 阅读全文
posted @ 2021-03-29 18:46 Mrsdwang 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 如果我们按照每个箱子装载的单元数量降序排序,然后每次只要箱子数量小于tracksize就一直从大的获取加入。 代码: 1 class Solution { 2 public: 3 int maximumUnits(vector<vector<int>>& boxTypes, i 阅读全文
posted @ 2021-03-29 17:06 Mrsdwang 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 第一个O(M+N)的空间复杂度。因为是原地算法,所以当我们根据0的位置更改为0后,我们再次遍历到0就会无法判断原来就是0还是更改后为0的。所以需要一个M*N的数据结构来记录原来为0的位置。 第一种 copy一个matrix,然后遍历copy的,如果有0就在matrix更改即可。 阅读全文
posted @ 2021-03-29 17:04 Mrsdwang 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 全排列,每个点都和其他所有点有不同顺序的排列。可以用DFS,但是是每DFS一次都要从头开始遍历组合,因为是全排列嘛,那这就出现一个问题了对于 1,2,3,4这个数组,我从2开始组合,会从第一个开始,2,1,选了1后又会重新开始遍历组合,遇到1,2,都已经不能再添加了,那么我们就 阅读全文
posted @ 2021-03-29 16:50 Mrsdwang 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 这种简单的题可以有更深层次的讨论。 先给出两种方法的代码: 首先是直接更改nums数组: 1 class Solution { 2 public: 3 vector<int> runningSum(vector<int>& nums) { 4 5 for(int i=1;i<n 阅读全文
posted @ 2021-03-29 16:45 Mrsdwang 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 因为要建立的最小高度的的二叉搜索树,且已经升序排序,根据左小右大的原理,我们可以通过二分,每次以部分区间的中心节点作为父亲节点,这样能保持两端平衡而达到最小高度。再将mid点左边的作为左子树再次递归,右边作为右子树再次递归,就能满足左小右大。 代码: 1 /** 2 * Def 阅读全文
posted @ 2021-03-29 16:32 Mrsdwang 阅读(44) 评论(1) 推荐(1) 编辑
摘要: 仅供自己学习 思路: 贪心,遍历所有数据,每次取最小的边作为该矩形能切割成最大的正方形的边,然后判断是否比之前获得的maxlen更大,如果大那么久更新maxlen为更大的边,并且计数归1重新开始。如果该切割的边等于maxlen,就计数即可: 1 class Solution { 2 public: 阅读全文
posted @ 2021-03-29 16:30 Mrsdwang 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 这种有计算顺序的题,可以用栈解决,同样是滞后如何处理的问题。遍历token,如果是数字就加入进栈,如果是运算符号,就取出栈顶和栈顶前一个数进行计算,并把这两个数pop掉,然后再把结果加入进栈。 因为token的元素是string,所以用int类型的栈时候,加入数字,得用c_st 阅读全文
posted @ 2021-03-29 16:05 Mrsdwang 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 用hashmap存,将每个元素-‘0’然后得到的值作为索引,然后在加1,并判断如果这个索引的元素大于1,那么就有重复的元素,返回false; 1 class Solution { 2 public: 3 bool isUnique(string astr) { 4 unorde 阅读全文
posted @ 2021-03-29 15:46 Mrsdwang 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 直接用一个队列添加请求,并判断所有队列中的请求时间被 t 减是否大于3000,如果大于3000则超过了[t-3000,t]的范围,就pop出去。最后返回queue的大小就可以。 1 class RecentCounter { 2 private: 3 int req=0; 4 阅读全文
posted @ 2021-03-29 15:37 Mrsdwang 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 这种要找出让树出现环而不成为树的边,可以通过查并集来寻找,因为当我们按顺序遍历所有节点。如果是树,那么就会遍历所有边到的都是目前的新结点,也就是没有加入树,不是同一个查并集里面的,也就不成环了,遍历后才会加入树才进入相同的查并集,但如果遍历边,边的两个端点是同一个查并集的,那是 阅读全文
posted @ 2021-03-29 15:29 Mrsdwang 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 直接判断每一个位有没有1,如果有1,计数一次即可。 因为二进制每个位的关系是2^N-1,所以我们用n & (1<<i)即可判断每个位是否为1,1<<i 是将1位移i位,即把第0位的1左移i位。 代码: 1 class Solution { 2 public: 3 int ham 阅读全文
posted @ 2021-03-29 15:17 Mrsdwang 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 因为是left到right范围内的所有元素的相与和,所以如果这个范围的数的二进制如果每一位都有0,那么最终就是0。如果不为0的话,那说明范围内所有数的某个位都为1。 所以相与是公共前缀,即相同的高位加上后续的全为0,那么和我们只需要一直右移到left和right相等即可,此时就 阅读全文
posted @ 2021-03-29 15:16 Mrsdwang 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 直接定义每个类型的车的park数的变量,每次创建一个对象就载入值,每加入一辆车就减少一个park数即可 代码: 1 class ParkingSystem { 2 private: 3 int pb=0; 4 int pm=0; 5 int ps=0; 6 public: 7 阅读全文
posted @ 2021-03-29 10:13 Mrsdwang 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 通过每次n和1相与获得最低位,然后将其左移到31-i位,在将n右移一位更新最低为,这样就能翻转过来了。 代码: 1 class Solution { 2 public: 3 uint32_t reverseBits(uint32_t n) { 4 uint32_t rev=0; 阅读全文
posted @ 2021-03-29 10:11 Mrsdwang 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 这里先使用的是递归的方法,首先是反转整个的链表,在判断已经递归到最后一个元素后,将该元素作为新的头节点,返回该元素,我们在倒数第二个元素,现在将这个元素的next的next指向该元素,再将该元素的next指向NULL,然后再次返回头节点,再次进行。 例如1->2->3->4,我 阅读全文
posted @ 2021-03-29 00:31 Mrsdwang 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路:用DFS递归即可,每次进入一个递归,就相当于下去一层,深度加1,再将深度传入即可。如果到叶子节点了,就返回深度,这个深度是左右两个子树在比较谁更深,去最深的长度作为返回的深度 代码: 1 /** 2 * Definition for a binary tree node. 3 * 阅读全文
posted @ 2021-03-29 00:30 Mrsdwang 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 贪心,每次从该位置 i 都选择能到达的位置之中选择最大的可以跳到的位置并且如果从这个位置跳的最大位置要大于 i 这个位置能跳到位置更大,就更新能跳到的位置。即使达到i最大能跳的位置了,最大跳数还是会更新,因为跳到的地方为 i+nums[i]。我们用一个end来记录一次i位置能跳 阅读全文
posted @ 2021-03-29 00:29 Mrsdwang 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 仅供自己学习 思路: 我们可以通过中序遍历先把每个节点存放于一个数组里,然后对于next函数,因为题目说了next一定是有效的,所以我们我们只需要返回索引在的位置的元素,并把索引加一对于hasnext函数,只需判断是否大于数组的长度即可。 代码: 1 /** 2 * Definition for a 阅读全文
posted @ 2021-03-29 00:27 Mrsdwang 阅读(43) 评论(0) 推荐(0) 编辑