贪心2|122.买卖股票的最佳时机II|55.跳跃游戏|45.跳跃游戏II一、122.买卖股票的最佳时机II题目链接:122.买卖股票的最佳时机II-力扣(LeetCode)需要理解最终利润是可以分解的,假如第0天买入,第3天卖出,那么利润为:prices[3]-prices[0]。相当于(prices[3]-prices[2])+(prices[2]-prices[1])+(prices[1]-prices[0])。将最终利润分解为每天利润之和,收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润,不需要记录区间。局部最优:收集每天的正利润,全局最优:求得最大利润。局部最优可以推出
贪心2|122.买卖股票的最佳时机II|55.跳跃游戏|45.跳跃游戏II一、122.买卖股票的最佳时机II题目链接:122.买卖股票的最佳时机II-力扣(LeetCode)需要理解最终利润是可以分解的,假如第0天买入,第3天卖出,那么利润为:prices[3]-prices[0]。相当于(prices[3]-prices[2])+(prices[2]-prices[1])+(prices[1]-prices[0])。将最终利润分解为每天利润之和,收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润,不需要记录区间。局部最优:收集每天的正利润,全局最优:求得最大利润。局部最优可以推出
1.有序数组的平方977.有序数组的平方第一想法:暴力破解看完题解想法:朝着双指针方向想遇到困难:用双指针的话,一开始想到两边指针往中间靠,逐个将最大值赋给结果数组。和题解不同的是,循环条件我写了 while(left!=right){...},相比于题解的 while(left,我需要在后面单独为第一个元素赋值(因为没有cover到最后一个元素就跳出循环了)判断条件中,对于nums[left]==nums[right]这种情况,一开始的想法是两头同时逼近与赋值。但是在最后两个元素相同时,此想法报错(例如:[-1,0,0,2])。因此左右指针相等时,可以将其归到两边指针中的一边执行。publi
1.有序数组的平方977.有序数组的平方第一想法:暴力破解看完题解想法:朝着双指针方向想遇到困难:用双指针的话,一开始想到两边指针往中间靠,逐个将最大值赋给结果数组。和题解不同的是,循环条件我写了 while(left!=right){...},相比于题解的 while(left,我需要在后面单独为第一个元素赋值(因为没有cover到最后一个元素就跳出循环了)判断条件中,对于nums[left]==nums[right]这种情况,一开始的想法是两头同时逼近与赋值。但是在最后两个元素相同时,此想法报错(例如:[-1,0,0,2])。因此左右指针相等时,可以将其归到两边指针中的一边执行。publi
目录977 有序数组的平方209 长度最小的子数组59 螺旋矩阵II977 有序数组的平方题目链接代码随想录题解看到题目的第一想法:这道题之前有遇到过,第一思路是判断数组是否是全为正数或者全为负数,对上面这两种情况单独处理;如果数组既包含正数也包含负数,就找到第一个出现的正数,而后拿两个指针分别向左右移动,但是这块的处理上一直无法ac,后面在仔细研究一下。看完代码随想录之后的想法:卡哥的方法清晰明了~代码实现:我的思路:对于有break的for循环,当break的时候,后面那次i++是不执行的;所以处理后面的循环时i+1;当一侧到边界的时候,另一侧肯定未到边界,比如左侧已越界,需要rightc
目录977 有序数组的平方209 长度最小的子数组59 螺旋矩阵II977 有序数组的平方题目链接代码随想录题解看到题目的第一想法:这道题之前有遇到过,第一思路是判断数组是否是全为正数或者全为负数,对上面这两种情况单独处理;如果数组既包含正数也包含负数,就找到第一个出现的正数,而后拿两个指针分别向左右移动,但是这块的处理上一直无法ac,后面在仔细研究一下。看完代码随想录之后的想法:卡哥的方法清晰明了~代码实现:我的思路:对于有break的for循环,当break的时候,后面那次i++是不执行的;所以处理后面的循环时i+1;当一侧到边界的时候,另一侧肯定未到边界,比如左侧已越界,需要rightc
最长上升子序列II题目描述给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤100000-10^9≤数列中的数≤10^9输入样例:73121856输出样例:4算法1(DP)O(n^2)动态规划状态转移时间复杂度O(n^2),数据范围10^5会TLE空间复杂度dontknowC++代码#includeusingnamespacestd;constintN=1010;intn;inta[N];intf[N];intmain(){cin>>n;for(inti=1;i算法
最长上升子序列II题目描述给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤100000-10^9≤数列中的数≤10^9输入样例:73121856输出样例:4算法1(DP)O(n^2)动态规划状态转移时间复杂度O(n^2),数据范围10^5会TLE空间复杂度dontknowC++代码#includeusingnamespacestd;constintN=1010;intn;inta[N];intf[N];intmain(){cin>>n;for(inti=1;i算法
最长上升子序列II题目描述给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤100000-10^9≤数列中的数≤10^9输入样例:73121856输出样例:4算法1(DP)O(n^2)动态规划状态转移时间复杂度O(n^2),数据范围10^5会TLE空间复杂度dontknowC++代码#includeusingnamespacestd;constintN=1010;intn;inta[N];intf[N];intmain(){cin>>n;for(inti=1;i算法
最长上升子序列II题目描述给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤100000-10^9≤数列中的数≤10^9输入样例:73121856输出样例:4算法1(DP)O(n^2)动态规划状态转移时间复杂度O(n^2),数据范围10^5会TLE空间复杂度dontknowC++代码#includeusingnamespacestd;constintN=1010;intn;inta[N];intf[N];intmain(){cin>>n;for(inti=1;i算法