目录
前言
踏平坎坷成大道,斗罢艰险又出发!
自律的尽头是自控,自控的尽头是硬控。
愿道友们披荆斩棘,终能得偿所愿。
简介
本人是小几年经验的前端开发,算法基础只有力扣几十道题,非常薄弱。
今天是个人的代码随想录算法硬控自己第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;
};