摘要:
62.不同路径 思路: 因为只能向左,和向下,因此只能是前面的加上左边的,递推公式较为简单 代码: 1 int uniquePaths(int m, int n) { 2 if (m == 1 || n == 1) return 1; 3 4 vector<vector<int>> nums(m, 阅读全文
摘要:
509. 斐波那契数 思路: 运用动态规划的思想 1,先定义一个数组 2,初始化 3,递推公式 4,遍历 代码: 1 int fib(int n) 2 { 3 if (n == 0) return 0; 4 if (n == 1) return 1; 5 6 vector<int> selected 阅读全文
摘要:
738.单调递增的数字 要求: 保证最大的一个数,它满足 每个位数都是递增的 思路1: 为了减少时间复杂度,当时打算,先判断最大的位数,从大-》小,看以后的位数是否满足当前数比前一个数大 思路2: 其实前面再往后想想:就是如果当前的数不满足,直接降级,然后后面都是9 就可以了 ——》一定要好好看例子 阅读全文
摘要:
435. 无重叠区间 要求: 给了多个区间,然后找出来删掉最少的区间数,从而可以让上下的区间不重叠 换个想法: 当前节点和上一个节点如果重叠,那么我就+1,然后缩小上一个节点,如果还是跟上一个节点重叠,那么就证明这个节点也要删除 小技巧: lamda函数不好用,每次比较的时候都会在定义一个cmp函数 阅读全文
摘要:
860.柠檬水找零 思路: 遇到20,先给10和5,再给三个5 代码: 1 bool lemonadeChange(vector<int>& bills) { 2 if (bills.size() == 0) return true; 3 4 map<int, int> currentMoney; 阅读全文
摘要:
1005.K次取反后最大化的数组和 思路: 仅排序一次,当前数<下一个数,就反转当前数,如果大于,那么就反转下一个 ——》也就是保证每次反转都是最小的数 注意:如果移动到最后一个节点了,K还没用完,那么就证明只能反转K 代码: 1 int largestSumAfterKNegations(vect 阅读全文
摘要:
122.买卖股票的最佳时机II 注意: 1,第一个和最后一个 2,只有一个数的情况 3,2255,这种情况 思路: 1,买入:左:空/高/平 右:高 2,卖出:左:低 右:空/ 低/平 代码: 1 int maxProfit(vector<int>& prices) { 2 int result = 阅读全文
摘要:
455.分发饼干 自己的 思路: 先排序,然后每个孩子找到他能满足的胃口饼干,找到了之后,孩子向前,饼干向前 代码: 1 int findContentChildren(vector<int>& g, vector<int>& s) 2 { 3 int result = 0; 4 sort(g.be 阅读全文
摘要:
332.重新安排行程(可跳过) 难点: 1,解决死锁问题,我采用的是 selected,但是不会出现A->B->A这条信息 2,即使出现A-》B-》A,因为是有多条路径,所以无法找到合适的含有全部机场的路径 3,保证顺序 代码: 1 //机票信息 -》 一条遍历所有机场的路径 2 //步骤: 3 / 阅读全文
摘要:
491.递增子序列 此题的难点: 1,前提需要保留原有顺序 2,保证递增 3,保证去重 注意: 去重一定要有set的同时保证有顺序 代码: 1 void findSubsequences_trackBack(vector<int>& nums, int startIndex, vector<int> 阅读全文