摘要:
1.resize()改变容器大小 2.reserve()容器大小管理 3.例子 #include <iostream> #include<vector> using namespace std; int main(){ vector<int> a(5,1); cout<<a.size()<<" "< 阅读全文
摘要:
1.680. 验证回文字符串 Ⅱ,可以删除掉一个,如何写的更简洁优雅。 2.647. 回文子串,O(n^2),中心扩展法,以字符串中每个作为中心点,单个字符或两个字符,i和j来控制。 阅读全文
摘要:
1.337. 打家劫舍 III,其实这个我还以为dp呢,原来是dfs,其实也是后根遍历的一种形式。 2.959. 由斜杠划分区域,其实这个如果构造3*3的话,BFS也可;构造2*2的,并查集解决(也放到并查集链接下)。 阅读全文
摘要:
1.861. 翻转矩阵后的得分,其实这个我没太看出来是贪心,更多的是位运算? 2.135. 分发糖果,hard题目,拆分为两个规则。 3.763. 划分字母区间,记录每个字母最后出现的位置,遍历与i下标比较是否可分,也有双指针的意思。 阅读全文
摘要:
1.198. 打家劫舍,很经典了。 2.213. 打家劫舍 II,可转化为198题。 3.典型连续子数组问题:(之后单独拎出来?区别于子序列问题) 3.1 53. 最大子序和,dp[i]表示以nums[i]为结尾的连续子数组的最大和,可用滚动数组优化。 4.72. 编辑距离,非常经典了,其实就是[i 阅读全文
摘要:
1.222. 完全二叉树的节点个数,根据树的节点个数进行遍历,当然递归式最简单的,我也会把这个放进二分应用当中。 阅读全文
摘要:
1.1. 两数之和,存当前数和下标映射,并在哈希表中查找补数。 2.1128. 等价多米诺骨牌对的数量,求等价的,也就是key相同,构造key通过pair的较大or较小一数*10+另一个数,绝了绝了。 3.159.最多有两个不同字符的最长子串,用哈希表来记录当前窗口中的字符出现次数,其实很多滑动窗口 阅读全文
摘要:
1.922. 按奇偶排序数组 II,可以称之为数组中的奇偶双指针,一个指针专指向奇数位,一位专指向偶数位置。 2.633. 平方数之和,隐含了巧妙的双指针,而且不要直接相加,会溢出。 3.剑指 Offer 57. 和为s的两个数字,167. 两数之和 II - 输入有序数组,比较基础的首尾对撞指针, 阅读全文
摘要:
1.452. 用最少数量的箭引爆气球:区间问题首先就要排序,这个也利用了贪心的思想,选择最右的位置。 2.435. 无重叠区间:基本区间问题,排序,可按照start或end,两种处理思路,区间相交的条件:当当前区间start<之前区间的end。两种思路都是分别从小到大排序,前者直接记录需要删除的区间 阅读全文
摘要:
单调栈: 1.402. 移掉K位数字:需要注意边界情况,去除完无字符返回”“,判断时不能有=号,栈内应该是不严格递增的。 2.316. 去除重复字母:需要借助哈希表来统计出现次数,并且标记是否已经存在于栈内。 3.84. 柱状图中最大的矩形,挺难的,针对每一个柱需要确定左右比它低的作为边界,正向遍历 阅读全文
摘要:
1.只能买卖一次:121. 买卖股票的最佳时机。求最大差值。 贪心思想:求最大价格差,针对每个更低价,去找它后面的最大值,求最大差值; 2.无限制:122. 买卖股票的最佳时机 II。最典型的问题,dp和贪心都可解。 贪心思想:求所有累计后-前的差值和 dp思想:dp[i][0]表示第i天不持有股票 阅读全文
摘要:
1.对链表排序,插入操作: 147. 对链表进行插入排序,需要用到dummy节点,有一个节点指向排好序的部位。 2.反转全部链表,反转部分链表(递归+迭代) 206. 反转链表,递归很经典,返回的是尾节点(反转之后的头结点);迭代很简单,就是让cur->next=pre,并且有第三个指针预先t=cu 阅读全文