赞
踩
class Solution {
public:
int maxProfit(vector<int>& prices) {
// dp[i][0]持有股票,dp[i][1]不持有股票
vector<vector<int>> dp(prices.size(), vector<int>(2,0));
dp[0][0] = -prices[0];
for(int i = 1; i < prices.size(); i++){
dp[i][0] = max(dp[i-1][0], dp[i-1][1]-prices[i]);
dp[i][1] = max(dp[i-1][0] + prices[i], dp[i-1][1]);
}
return dp[prices.size()-1][1];
}
};
public:
bool canJump(vector<int>& nums) {
int maxDistance = nums[0];
for(int i = 0; i <= maxDistance; i++){
maxDistance = max(maxDistance, i + nums[i]);
if(maxDistance >= nums.size() - 1)
return true;
}
return false;
}
};
class Solution {
public:
int jump(vector<int>& nums) {
int result = nums.size();
vector<int> dp(nums.size(), nums.size());
dp[0] = 0;
for(int i = 0; i < nums.size(); i++){
for(int j = 0; j <= nums[i] && i+j < nums.size(); j++){
dp[i+j] = min(dp[i] + 1, dp[i+j]);
}
}
return dp[nums.size()-1];
}
};
class Solution { public: int largestSumAfterKNegations(vector<int>& nums, int k) { sort(nums.begin(), nums.end()); int pre = nums[0];//记录绝对值最小的数 int result = 0; for(int i = 0; i < nums.size(); i++){ if(k > 0 && nums[i] < 0){ k--; nums[i] *= -1; pre = nums[i]; } else if(k > 0 && nums[i] == 0){ k = 0; } // 绝对值最小的一定是在这或前一个数 else if(k > 0 && nums[i] > 0){ if(k % 2 != 0){ pre = min(nums[i], pre); result -= 2*pre; } k = 0; } result += nums[i]; } if(k > 0 && k % 2 != 0){ result -= 2*pre; } return result; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。