53 最大子数组和
用一个curr来记录当前的子数组的和,如果当前子数组和已经小于0,那么就直接从0开始计算。但是要先更新res。
var maxSubArray = function(nums) {
let res = -Infinity, curr = 0
for (const num of nums) {
curr += num
res = Math.max(res, curr)
curr = Math.max(curr, 0)
}
return res
};
455 分发饼干
先排序,然后满足胃口最小的小朋友
var findContentChildren = function(g, s) {
g.sort((a, b) => a - b)
s.sort((a, b) => a - b)
let i = 0, j = 0
let res = 0
while (i < g.length && j < s.length) {
if (s[j] >= g[i]) {
res += 1
i += 1
j += 1
} else {
j += 1
}
}
return res
};
376 摆动序列
if(nums.length <= 1) return nums.length
let result = 1
let preDiff = 0
let curDiff = 0
for(let i = 0; i < nums.length - 1; i++) {
curDiff = nums[i + 1] - nums[i]
// 出现峰值
if((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) {
result++
// 只有峰值变化的时候,更新prevdiff
preDiff = curDiff
}
}
return result