第八章 贪心算法 part01

由 Greyson 发布

455.分发饼干

func findContentChildren(g []int, s []int) int {
    sort.Ints(g)
    sort.Ints(s)
    i := 0
    j := 0
    res := 0
    for i < len(g) && j < len(s) {
        if g[i] <= s[j] {
            res++
            i++
            j++
        } else {
            j++
        }

    }
    return res
}

376. 摆动序列


class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        if (nums.size() <= 1) return nums.size();
        int curDiff = 0; // 当前一对差值
        int preDiff = 0; // 前一对差值
        int result = 1;  // 记录峰值个数,序列默认序列最右边有一个峰值
        for (int i = 0; i < nums.size() - 1; i++) {
            curDiff = nums[i + 1] - nums[i];
            // 出现峰值
            if ((preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)) {
                result++;
                preDiff = curDiff; // 注意这里,只在摆动变化的时候更新prediff
            }
        }
        return result;
    }
};

53. 最大子序和

func maxSubArray(nums []int) int {

    res := -1000000
    temp := 0

    for i := 0; i < len(nums); i++ {
        temp += nums[i]
        res = max(res, temp)

        if temp < 0 {
            temp = 0
        } 

    }
    return res
}

扫描二维码,在手机上阅读
收藏

0条评论

发表评论


验证码