代码随想录算法训练营第二十天 | Javascript | 力扣Leetcode | 贪心 | 455. 分发饼干、376. 摆动序列、53. 最大子数组和

目录

前言

简介

题目链接:455. 分发饼干

题目链接:376. 摆动序列

题目链接:53. 最大子数组和


前言

踏平坎坷成大道,斗罢艰险又出发!

自律的尽头是自控,自控的尽头是硬控

愿道友们披荆斩棘,终能得偿所愿。

简介

本人是小几年经验的前端开发,算法基础只有力扣几十道题,非常薄弱。

今天是个人的代码随想录算法硬控自己第20天,开启贪心。

题目链接:455. 分发饼干

记得先排序!

/**
 * @param {number[]} g
 * @param {number[]} s
 * @return {number}
 */
var findContentChildren = function (g, s) {
    let res = 0, index = s.length - 1;
    // 记得先排序
    g.sort((a, b) => a - b);
    s.sort((a, b) => a - b);

    for (let i = g.length - 1; i >= 0; i--) {
        if (index >= 0 && s[index] >= g[i]) {
            res++;
            index--;
        }
    }

    return res;
};

题目链接:376. 摆动序列
/**
 * @param {number[]} nums
 * @return {number}
 */
var wiggleMaxLength = function (nums) {
    // preDiff为0的原因:我们在第一个元素前虚拟出来一个前缀,它的值跟第一个元素相同,因此初始化    preDiff为0
    // res为1的原因:默认最后一个元素就是个摆动
    let res = 1, preDiff = 0, currDiff = 0;
    
    // 只需要循环到倒数第二个,因为最后一个元素我们已经初始化默认为摆动了
    for (let i = 0; i <= nums.length - 2; i++) {
        let currDiff = nums[i + 1] - nums[i];
        if ((preDiff >= 0 && currDiff < 0) || (preDiff <= 0 && currDiff > 0)) {
            res++;
            // 只需要在有摆动的时候再更新preDiff,为了解决单调有平坡
            preDiff = currDiff;
        }
    }

    return res;
};

题目链接:53. 最大子数组和

很经典的一道题,之前刷过,秒了~

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function (nums) {
    let prevSum = nums[0], maxSum = nums[0];
    for (let i = 1; i < nums.length; i++) {
        prevSum = prevSum < 0 ? nums[i] : prevSum + nums[i];
        maxSum = Math.max(maxSum, prevSum);
    }
    return maxSum;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值