摘要:
仅供自己学习 思路: 一开始是想直接用erase函数删除,但是发现能想到的删除方式都会越界,例如下标0后还--,第一个元素还用0-1。 因为存在abba这种情况,当删除bb后还需要删除aa,那么就需要一个数据结构来存储这个a,方便第2个a能和他比较。这里我们用栈来存储。 当每次都判断当前的元素是否等 阅读全文
摘要:
仅供自己学习 思路: 比较基础的贪心问题,需要清楚贪心的条件是什么,如果为了能让最多的人吃饱,那么应该从胃口最小的开始为食,所以要排序,对于饼干,应该从最小分量的开始吃,这样才能在最大满足胃口值小的后还能满足一部分胃口值大的。所以饼干也需要从小到大排序。 然后就开始遍历,一个循环,条件是小于孩子的数 阅读全文
摘要:
仅供自己学习 思路: 直接深搜即可,我们用out暂存一个回文子串,res为所有可能的回文子串存放的数组,是最终结果,用start作为深搜的起点位置,我们需要一个函数来判断是否为回文串,一个DFS函数,即可。 例如s为aabc的时候,a -> a -> b -> c -> bc -> ab -> ab 阅读全文
摘要:
仅供自己学习 思路: 做的时候再纠结如何分离出是为1比特数0还是2比特数的10。如果遇到0就到第二个元素,遇到1就跳过第二个个元素直接判断第三个元素是为0还是1,这样就能避免判断是2比特数10还是1比特数0。当这样跳过时,到达最后一个元素要么是倒数第二个数是1然后直接结束循环遍历,此时就返回fals 阅读全文
摘要:
仅供自己学习 思路: 深搜和广搜都是能做的,但是需要进行剪枝。剪枝条件,如果该点访问过了就不对这个点继续DFS,如果K<0了且没到达目的点就返回不继续DFS, 如果当前的花费+新节点的花费大于之前的花费也返回不继续DFS。 DFS: 1 class Solution { 2 public: 3 in 阅读全文
摘要:
环境:Ubuntu 20.04 已安装cmake 第一次安装:(失败) 我是按照 官方文档的教程来装的 网址:https://clang.llvm.org/get_started.html 1.首先是 git clone这条指令,出现报错 fatal: unable to access 'https 阅读全文
摘要:
仅供自己学习 思路: 这里只用两个栈来模拟队列,因为栈是先进后出,队列是先进先出,所以一个栈instack用来存进来的元素,另一个栈outstack存instack弹出的元素,且若instack要将元素加入进outstack中,只有当outstack空了才能重新加入新进instack得元素,否则顺序 阅读全文
摘要:
仅供自己学习 思路: 因为括号匹配是有滞后性,且s后面的括号先完成配对,所以可以考虑用栈存储前面的括号,同时也保证匹配的顺序正确。 如果s的长度 不是2的倍数,那么肯定是无法配对的,这里判断是不是2的倍数我们使用 s.length() &1来判断,同时如果s的第一个元素为‘)’,‘]’,'}'则也是 阅读全文
摘要:
仅供自己学习 思路: 这道题必须要知道一个知识点,如何进行通过位运算获得 位为1的数量。这个公式是 i&(i-1),原因是相邻的两个数相差为1,即使在二进制中,也只是最低位有一个1的差距造成其他位的不相同,而其引起的变化相与,除了i为2的次幂的数外,都会存在与为1的情况,用该公式每次相与后都会使二进 阅读全文
摘要:
仅供自己学习 思路: 这个题和上一个题目类似,都是先存储从起始位置到该位置的和。唯一需要特别处理的就是怎么求和。 这里得注意sums的下标与矩阵下标的关系。可以画出一个矩阵,能得到 sums[i+1][j+1]=sums[i+1][j]+sums[i][j+1]-sums[i][j]+matrix[ 阅读全文