455. 分发饼干
题目链接:455. 分发饼干
思路: 大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个。先将饼干数组和小孩数组排序。
然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int count = 0;
int index = s.length - 1;
for (int i = g.length - 1; i >= 0; i--) {
if (index >= 0 && s[index] >= g[i]) {
count++;
index--;
}
}
return count;
}
}
376. 摆动序列
题目链接:376. 摆动序列
思路: 其实是在计算峰值的个数。
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 = 0; i < nums.length - 1; i++) {
curdiff = nums[i + 1] - nums[i];
if (curdiff > 0 && prediff <= 0 || curdiff < 0 && prediff >= 0) {
count++;
}
prediff = curdiff;
}
return count;
}
}
53. 最大子数组和
题目链接:53. 最大子数组和
思路: 如果和为负了,就从下一个数字重新开始计算。
class Solution {
public int maxSubArray(int[] nums) {
if (nums.length == 1){
return nums[0];
}
int sum = 0;
int res = Integer.MIN_VALUE;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
res = Math.max(res, sum);
if (sum < 0) {
sum = 0;
}
}
return res;
}
}