内容来自zvvq,别采集哟
122. 交易股票的最佳时期 II给你一个整数数组prices,其中prices[i]是给出个股于第i天价钱。 copyright zvvq
每日,您都能够决定购买和/或出售股票。您在任何时候不得超过拥有一股个股。可是,您可以选购并在同一天马上售卖。
内容来自zvvq
找到并退还你能获得的最大利润。 zvvq好,好zvvq
实例1:
键入:价钱=[7,1,5,3,6,4]
导出:7 内容来自samhan666
表明:第 2 天买进(价钱 = 1),第 3 天售出(价钱 = 5),利润 = 5-1=4。
内容来自samhan
随后于第4天买进(价钱=3)并于第5天售出(价钱=6),盈利=6-3=3. zvvq好,好zvvq
总利润为4+ 3 =7. zvvq好,好zvvq
实例2:键入:价钱=[1,2,3,4,5]
导出:4
表明:第 1 天买进(价钱 = 1),第 5 天售出(价钱 = 5),利润 = 5-1=4。
zvvq
总利润为4. copyright zvvq
实例3:键入:价钱=[7,6,4,3,1]
内容来自zvvq,别采集哟
导出:0 zvvq.cn
表明:没办法获得正盈利,因此我们从不买股票来达到最大利润0。限定:
本文来自zvvq
1 0 初始页面
zvvq好,好zvvq
错误代码 zvvq
public intmaxProfit(int[]价钱){
盈利= 0; 内容来自samhan666
int选购=Integer.MAX_VALUE;
zvvq好,好zvvq
整数总数=0; 内容来自samhan
int窥探= 0;
for(int i=0; i价钱[i];" if> 选购 && num > 看){ zvvq
利润 = num - 选购;
copyright zvvq
窥探=数据;
zvvq好,好zvvq
} zvvq
else if((num>选购 && num我复位买到 int MAX_VALUE 并忘掉升级这可能会导致一些错误。 内容来自samhan
修补该问题并断开编码
细致编码
public intmaxProfit(int[]价钱){
if(prices.length窥探){ zvvq
利润 = num - 选购; 内容来自samhan666
窥探=数据;
} zvvq好,好zvvq
不然 if(num
内容来自samhan
1005.K个否认后数组总和更大化
给出一个整数数组 nums 和一个整数 k,按以下方式改动该数组: zvvq好,好zvvq
选择一个检索 i 并把 nums[i] 替换为 -nums[i]。
zvvq
您应该精确运用此过程 k次。您可以数次挑选同样的检索 i。
那样修改后返回数组可能的主要和。 内容来自samhan666
实例1:
zvvq.cn
键入:nums =[4,2,3], k = 1
zvvq
导出:5 zvvq好,好zvvq
表述:挑选检索 1,nums 变成 [4,-2,3]。 内容来自zvvq,别采集哟
实例2: zvvq
键入:nums =[3,-1,0,2], k= 3
导出:6 内容来自samhan666
表述:挑选检索 (1, 2, 2),nums 变成 [3,1,0,2]。
内容来自zvvq
实例3:
键入:nums =[2,-3,-1,5,-4], k= 2 本文来自zvvq
导出:13
内容来自samhan666
表述:挑选检索 (1, 4),nums 变成 [2,3,-1,5,4]。 内容来自zvvq,别采集哟
限定: zvvq
-100
zvvq
初始页面 内容来自zvvq
public intMaximumSumAfterKNegations(int[] nums, int k){ 内容来自samhan
Arrays.sort(nums);
int转变= nums[nums.length-1]>=0?0:nums.length-1;
zvvq.cn
整数总数=0;
zvvq
for(int i=0; i0){
内容来自zvvq,别采集哟
总数-= nums[i]; 内容来自samhan
k——;
}其他{
总数+= nums[i];
copyright zvvq
}
copyright zvvq
//寻找交接点
内容来自zvvq,别采集哟
if(i>0&& nums[i-1]0){
zvvq好,好zvvq
if(-nums[i-1]>nums[i]){ 内容来自zvvq,别采集哟
更改=我; 内容来自samhan666
}其他{ 内容来自samhan666
转变=i-1; 内容来自zvvq
} copyright zvvq
} zvvq好,好zvvq
}
// k>nums.length所以我们需要用了这种 k 内容来自zvvq,别采集哟
假如(k>0){
zvvq.cn
假如(k%2!=0){ 内容来自samhan
//寻找最少平方根 内容来自zvvq
sum-= 2Math.abs(nums[转变]);
}
}
copyright zvvq
回到总数; 本文来自zvvq
} 内容来自zvvq,别采集哟
55.跳跃游戏给你一个整数数组 nums。您最初位于数组的第一个检索处,数组中的每个原素代表你在该位置的主要弹跳长度。 copyright zvvq
假如可以到达最后一个检索,则回到 true,不然回到 false。
实例1:
键入:nums =[2,3,1,1,4] zvvq.cn
导出:true 内容来自zvvq
表明:从检索 0 跳 1 步到 1,随后跳 3 步到后来一个检索。
内容来自samhan666
实例2:键入:nums =[3,2,1,0,4]
copyright zvvq
导出:假 zvvq
表明:不管怎样,你总会到达检索 3。它的最大跳转长度为0,这使得其无法到达最后一个检索。限定: 内容来自samhan666
错误代码
内容来自zvvq
publicbooleancanJump(int[] nums){
本文来自zvvq
//确定是否抵达最后一个元素,这样大家只看到了是否抵达倒数第二个原素
zvvq好,好zvvq
for(int i=0; i= nums.length){ zvvq.cn
回到真; 内容来自samhan666
}
zvvq
//搜索当前步中的最大计步
for(intj=0;j下一个){
内容来自samhan666
下一个= i+j+nums[i+j];
内容来自zvvq
}
}
内容来自samhan666
我=下一个; zvvq.cn
}
zvvq好,好zvvq
回到真;
}
错误代码2
copyright zvvq
publicbooleancanJump(int[] nums){
zvvq.cn
if(nums.length==1){
本文来自zvvq
回到真; zvvq好,好zvvq
} copyright zvvq
if(nums[0]== 0){
内容来自zvvq
回到假; 本文来自zvvq
}
zvvq
for(int i=0; i=nums.length-1){ zvvq好,好zvvq
回到真; 内容来自samhan666
}
}
回到假; copyright zvvq
} zvvq
publicbooleancanJump(int[] nums){ 内容来自zvvq
if(nums.length==1){
回到真; zvvq.cn
} 内容来自zvvq,别采集哟
整数范畴=0;
内容来自samhan
for(int i=0; i= nums.length-1){
内容来自samhan666
回到真;
} zvvq
} 内容来自samhan
回到假;
} zvvq
45.跳跃游戏二给你一个 0 检索的长度为 n 的整数 nums 数组。您最初位于 nums[0]. zvvq
每个原素nums[i]代表从检索i往前跳转的主要长度。也就是说,假如你在 nums[i],你能跳转一切 nums[i+j],其中:
0 i +j回到抵达 nums[n- 1]的最小弹跳频次。产生的功能测试能够达到 nums[n- 1]。
实例1:
内容来自samhan
键入:nums =[2,3,1,1,4] zvvq.cn
导出:2 内容来自zvvq
表明:抵达最后一个检索的最小跳转次数为 2。从检索 0 到 1 跳转 1 步,随后跳转 3 步到后来一个检索。
内容来自samhan666
实例2:键入:nums =[2,3,0,1,4] 本文来自zvvq
导出:2限定:
内容来自zvvq,别采集哟
1 0 确保你能做到nums[n- 1].
公共 int跳转(int[] nums){
if(nums.length== 1){
内容来自samhan666
回到0; zvvq.cn
}
本文来自zvvq
整数步=0; 内容来自zvvq,别采集哟
整数范畴=0; 内容来自samhan
int预置范畴= 0; 内容来自samhan
for(int i=0; i= nums.length-1){ 内容来自samhan666
流程++;
歇息; 内容来自samhan
} 内容来自samhan
if(i==preRange){ 内容来自samhan666
预范畴=范畴;
流程++;
} copyright zvvq
}
本文来自zvvq
回到流程;
zvvq.cn
}
以上就是LeetCode Day 贪心算法第 2 部分的详细内容,大量请关注其他类似文章! 内容来自samhan666