122.买卖股票的最佳时机 II
说实话,这道题简单到有点让人觉得难(不敢相信)。。
55.跳跃游戏
没想出来。
45.跳跃游戏 II
依旧没想到。看完思路写的:
一句话总结思路:看两步最远能跳到哪。两步!两步!!两步!!!
因为答案好像并没有模拟出跳的过程,所以比较难理解,我这里是模拟出跳跃过程的。
class Solution {
public:
int jump(vector<int>& nums) {
int count = 0;
if (nums.size() == 1) return count;
for (int i = 0; i < nums.size(); i++) {
if (i + nums[i] >= nums.size() - 1) {
count++;
break;
}
int index = i + nums[i];
for (int j = 1; j <= nums[i]; j++) {
if (nums[i + j] + i + j > nums[index] + index) index = i + j;
}
i = index - 1;
count++;
}
return count;
}
};
1005.K次取反后最大化的数组和
这题AC倒是很容易,把数组按大小排序一下就好。参考解法按绝对值排序的方法更好!
class Solution {
public:
int largestSumAfterKNegations(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
for (int i = 0; k > 0 && i < nums.size(); i++) {
if (nums[i] <= 0) {
if (nums[i] == 0) {
k = 0;
break;
}
nums[i] = -nums[i];
k--;
}
}
if (k % 2 == 1) {
sort(nums.begin(), nums.end());
nums[0] = -nums[0];
}
int sum = 0;
for (int num : nums) sum += num;
return sum;
}
};
算法题:买卖股票、跳跃游戏及数组取反

被折叠的 条评论
为什么被折叠?



