455. 分发饼干 - 力扣(LeetCode)
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int start = 0;
int count = 0;
for(int i = 0;i < s.length && start < g.length;i++){
if(s[i] >= g[start]){
start++;
count++;
}
}
return count;
}
}
376. 摆动序列 - 力扣(LeetCode)
方法一:
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 = 1; i < nums.length; i++) {
// 得到当前差值
curDiff = nums[i] - nums[i - 1];
// 如果当前差值和上一个差值为一正一负
// 等于0的情况表示初始时的preDiff
if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) {
count++;
preDiff = curDiff;
}
}
return count;
}
}
方法二
class Solution {
public int wiggleMaxLength(int[] nums) {
int down = 1,up = 1;
for(int i = 1;i<nums.length;i++){
if(nums[i] > nums[i-1]){
up = down + 1;
}
else if(nums[i]<nums[i-1]){
down = up +1;
}
}
return nums.length == 0?0:Math.max(down,up);
}
}
方法三
class Solution {
public int wiggleMaxLength(int[] nums) {
//构造差值序列,遇到连续正就跳过,长度=差序列+1
List<Integer> ls = new ArrayList<>();
for(int i = 1 ;i < nums.length;i++){
int num = nums[i]-nums[i-1];
if(ls.size()> 0 && ls.getLast()*num < 0 ) ls.add(num);
if(ls.size() == 0&& num != 0 ) ls.add(num);
}
return ls.size()+1;
}
}
53. 最大子数组和 - 力扣(LeetCode)
class Solution {
public int maxSubArray(int[] nums) {
int ans = nums[0];
int sum = 0;
for (int num : nums) {
if (sum > 0) {
sum += num;
} else {
sum = num;
}
ans = Math.max(ans, sum);
}
return ans;
}
}