贪心2

  1. 买卖股票的最佳时机 II
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int answer = 0;
        
        for(int i = 1 ; i < prices.size(); i++)
        {
            if(prices[i] - prices[i - 1] > 0)
                answer += prices[i] - prices[i - 1];
        }
        return answer;
    }
};
  1. 跳跃游戏
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int cover = 0;
        if(nums.size() == 1) return true;
        for(int i = 0; i <= cover; i++)
        {
            cover = max(cover, nums[i] + i);
            if(cover >= nums.size() - 1)
                return true;
        }
        return false;
    }
};
  1. 跳跃游戏 II
class Solution {
public:
    int jump(vector<int>& nums) {
       int n = nums.size();
        int height = 0;
        int ans = 0;
        vector<int> dp(n, n + 1);
        dp[0] = 0;
        for(int i = 0; i < n; i++)
        {
            for(int j = i - 1; j >= 0; j--)
            {
                if(nums[j] + j >= i)
                    dp[i] = min(dp[i], dp[j] + 1);
            }
        }
        return dp[n - 1];
    }
};
  1. K 次取反后最大化的数组和
class Solution {
public:
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        sort(nums.begin(), nums.end());
        int result = 0;
        for(int i = 0; i < nums.size(); i++)
        {
            if(k > 0 && nums[i] <= 0)
            {
                nums[i] = -1 * nums[i];
                k--;
            }
            
                
            result += nums[i];
            
        }
        sort(nums.begin(), nums.end());

        return result - (k % 2 == 0? 0: 2 * nums[0]);
    }
};
posted @ 2025-02-13 20:45  skyler886  阅读(11)  评论(0)    收藏  举报