目录
前言
LeetCode122.买卖股票的最佳时机II
LeetCode55. 跳跃游戏
LeetCode45.跳跃游戏II
LeetCode1005.K次取反后最大化的数组和
视频讲解:LeetCode:1005.K次取反后最大化的数组和
一、LeetCode122.买卖股票的最佳时机II
题目链接:
122. 买卖股票的最佳时机 II - 力扣(LeetCode)
代码:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int profit = 0;
for(int i = 1; i < prices.size(); i++)
{
int diff = prices[i] - prices[i - 1];
if(diff > 0)
{
profit += diff;
}
}
return profit;
}
};
二、LeetCode55. 跳跃游戏
题目链接:
代码:
class Solution {
public:
bool canJump(vector<int>& nums) {
int scope = 0;
if(nums.size() == 1) return true;
for(int i = 0; i <= scope; i++)
{
scope = max(i + nums[i], scope);
if(scope >= nums.size() - 1)
return true;
}
return false;
}
};
三、LeetCode45.跳跃游戏II
题目链接:
代码:
class Solution {
public:
int jump(vector<int>& nums) {
if(nums.size() == 1) return 0;
int curCover = 0;
int nextCover = 0;
int result = 0;
for(int i = 0; i < nums.size(); i++)
{
nextCover = max(i + nums[i], nextCover);
if(i == curCover)
{
curCover = nextCover;
result++;
if(nextCover >= nums.size() - 1)
break;
}
}
return result;
}
};
四、LeetCode1005.K次取反后最大化的数组和
题目链接:
1005. K 次取反后最大化的数组和 - 力扣(LeetCode)
代码:
bool compare(int left, int right)
{
return abs(left) > abs(right);
}
class Solution {
public:
int largestSumAfterKNegations(vector<int>& nums, int k) {
sort(nums.begin(), nums.end(), compare);
int sum = 0;
for(int i = 0; i < nums.size(); i++)
{
if(k > 0 && nums[i] < 0)
{
nums[i] *= -1;
k--;
}
sum += nums[i];
}
if(k % 2 == 1)
{
sum -= (2 * nums[nums.size() - 1]);
}
return sum;
}
};