Skip to content

Latest commit

 

History

History
79 lines (62 loc) · 1.63 KB

greedy.md

File metadata and controls

79 lines (62 loc) · 1.63 KB

[TOC]

贪心的本质是选择每一阶段的局部最优,从而达到全局最优

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        sort(g.begin(), g.end());
        sort(s.begin(), s.end());
        int res = 0;

        for (int i = 0; i != s.size(); ++i) {
            if (res < g.size() && g[res] <= s[i]) ++res;
        }

        return res;
    }
};
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int res = INT32_MIN;
        int sum = 0;

        for (int i = 0; i != nums.size(); ++i) {
            sum += nums[i];
            if (sum > res) res = sum;
            if (sum < 0) sum = 0;
        }

        return res;
    }
};
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int res = 0;
        for (int i = 1; i != prices.size(); ++i) {
            res += max(prices[i] - prices[i - 1], 0);
        }

        return res;
    }
};
class Solution {
public:
    bool canJump(vector<int>& nums) {
        // special case
        if (nums.empty() || nums.size() == 1) return true;

        int cover = 0;

        for (int i = 0; i <= cover; ++i) {
            cover = max(cover, i + nums[i]);
            if (cover >= nums.size() - 1) return true;
        }

        return false;
    }
};