算法训练营Day31(贪心)

理论基础

理论就是没有理论,知道局部最优推整体最优的思想

455. 分发饼干 - 力扣(LeetCode)

小孩是外层循环的原因是:小孩可以饿着,饼干不能扔掉!

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int res=0;
        int index = s.length-1;
        for(int i = g.length-1;i>=0;i--){
            if(index>=0&&s[index]>=g[i]){
                res++;
                index--;
            }
        }
        return res;
    }
}

376. 摆动序列 - 力扣(LeetCode)

aaa这个题,我不太理解和贪心的关系,没搞懂,二刷再好好理解

class Solution {
    public int wiggleMaxLength(int[] nums) {
        if (nums.length <= 1) {
            return nums.length;
        }
        //当前差值
        int curDiff = 0;
        //上一个差值
        int preDiff = 0;
        int count = 1;
        for (int i = 1; i < nums.length; i++) {
            //得到当前差值
            curDiff = nums[i] - nums[i - 1];
            //如果当前差值和上一个差值为一正一负
            //等于0的情况表示初始时的preDiff
            if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) {
                count++;
                preDiff = curDiff;
            }
        }
        return count;
    }
}

53. 最大子数组和 - 力扣(LeetCode)

class Solution {
    public int maxSubArray(int[] nums) {
        int result=Integer.MIN_VALUE;
        int sum = 0;
        for(int i = 0;iresult){
                result=sum;
            }
            if(sum<=0){
                sum=0;
            }
        }
        return result;
    }
}

你可能感兴趣的:(算法,java,数据结构)