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