代码随想录算法刷题训练营第二十三天 | 455. 分发饼干 376. 摆动序列 53. 最大子数组和

455. 分发饼干

题目链接:455. 分发饼干 - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

思路: 每个孩子有一个胃口,每个饼干有尺寸,要满足尽可能多的孩子

用贪心的思想,局部最优达到全局最优,局部最优就是大饼干可以满足小胃口孩子,也可以满足大胃口孩子,那么就让饼干尽可能满足胃口最接近的孩子

胃口排序,饼干排序,倒着遍历胃口,(倒着遍历饼干)如果饼干大于胃口,就计数,饼干遍历,否则就自动遍历胃口

        int k=s.length-1;
        for(int i=g.length-1;i>=0;i--) {
            if(k>=0 && s[k] >= g[i]){
                count++;
                k--;
            }
        }

还有一个想法是从小到大遍历,小饼干先满足小胃口

int k = 0;
        for(int i=0;i<s.length;i++) {
            if(k<g.length && s[i] >= g[k]) k++;
        }

 遍历饼干,如果饼干不小于胃口,就胃口k++,最后k就是数量

376. 摆动序列

题目链接:​​​​​​​376. 摆动序列 - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

思路: 摆动序列就是一个山峰一个山谷,一个山峰一个山谷,可以删除元素

记录前一对差值,后一对差值,如果前一对小于0,后一对》0,或者前一对大于0,后一对《0,就说明遇到极值,就+1

但是考虑到初始情况为0,就if((prediff <=0 && curdiff > 0) || (prediff >=0 && curdiff < 0))

prediff什么时候为0?最开始时,遇到平地时,遇到平地时这个条件不符合,prediff从何而来,除了最开始的0,后面都是curdiff造的,只有在遇到坡度变化时才赋值给prediff

public int wiggleMaxLength(int[] nums) {
        if(nums.length <=1)return nums.length;
        int result = 1;
        int prediff = 0;
        int curdiff = 0;
        for(int i=0;i<nums.length-1;i++) {
            curdiff = nums[i+1] - nums[i];
            if((prediff <=0 && curdiff > 0) || (prediff >=0 && curdiff < 0)) {
                result ++;
                prediff = curdiff;
            }
        }
        return result;
    }

53. 最大子数组和

题目链接:​​​​​​​53. 最大子数组和 - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

 思路:求最大子数组和,用贪心思想,我让每新加一个数的子数组都最大,如果此时和《0,就舍弃 了,因为负数只会让和变小

public int maxSubArray(int[] nums) {
        int max = -10011;
        int sum = 0;
        for(int i=0;i<nums.length;i++) {
            sum += nums[i];
            if(sum > max) max = sum;
            if(sum < 0) {
                sum = 0;
            }
        }
        return max;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值