122.买卖股票的最佳时机II
题目链接:122.买卖股票的最佳时机II
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰买卖股票的最佳时机II
日期:2024-10-03
想法:本来还在想什么时候买股票,结果只需要考虑每天的正收益累加就是最大的收益了。
Java代码如下:
class Solution {
public int maxProfit(int[] prices) {
int res = 0;
for(int i = 1; i < prices.length; i++) {
res += Math.max((prices[i] - prices[i - 1]), 0);
}
return res;
}
}
55. 跳跃游戏
题目链接:55. 跳跃游戏
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰跳跃游戏
日期:2024-10-03
想法:用i + nums[i]得到最大的可跳跃范围cover,在可跳跃范围里找更大的范围,直到能包含终点。
Java代码如下:
class Solution {
public boolean canJump(int[] nums) {
int cover = 0;
for(int i = 0; i <= cover; i++) {
cover = Math.max(i + nums[i], cover);
if(cover >= nums.length - 1) return true;
}
return false;
}
}
45.跳跃游戏II
题目链接:45.跳跃游戏II
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰跳跃游戏II
日期:2024-10-03
想法:记录当前这一步能跳的范围和下一步的范围,当走到当前这一步尽头时没能到终点,步数加一,进入下一步。
Java代码如下:
class Solution {
public int jump(int[] nums) {
int count = 0;
int cur = 0;
int next = 0;
for(int i = 0; i < nums.length; i++) {
next = Math.max(i + nums[i], next);
if(i == cur) {
count++;
cur = next;
if(next >= nums.length - 1) break;
}
}
return count;
}
}
1005.K次取反后最大化的数组和
题目链接:1005.K次取反后最大化的数组和
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰K次取反后最大化的数组和
日期:2024-10-03
想法:排序数组,负数反转,如果负数不够就根据剩下的次数,为奇数则再次排列翻转最小的,为偶数则不变。
Java代码如下:
class Solution {
public int largestSumAfterKNegations(int[] nums, int k) {
Arrays.sort(nums);
for(int i = 0; i < nums.length && k > 0; i++) {
if(nums[i] < 0) {
nums[i] = -nums[i];
k--;
}
}
if(k % 2 == 1) {
Arrays.sort(nums);
nums[0] = -nums[0];
}
int sum = 0;
for(int num : nums) {
sum += num;
}
return sum;
}
}
标签:游戏,nums,int,随想录,II,跳跃
From: https://www.cnblogs.com/wowoioo/p/18445531