Leetcode 455 分配饼干
将两个数组排序之后,通过两个指针依次移动来判断当前饼干是否能满足当前孩子的需求
class Solution {
public int findContentChildren(int[] g, int[] s) {
int n = g.length;
int m = s.length;
Arrays.sort(g);
Arrays.sort(s);
int start = 0;
int count = 0;
for(int i=0;start<n&&i<m;i++){
if(g[start]<=s[i]){
count++;
start++;
}
}
return count;
}
}
376. 摆动序列
记录前一次的差值和这一次的差值,如果两个一个为正一个为负则满足条件count++
需要注意的是,preDiff是可以为0的因为在第一次取值是preDiff就为0;且如果curDiff==0;会继续向后。
class Solution {
public int wiggleMaxLength(int[] nums) {
int n = nums.length;
int count = 1;
if(n==1){
return 1;
}
int curDiff = 0;
int preDiff = 0;
for(int i=1;i<n;i++){
curDiff = nums[i]-nums[i-1];
if(curDiff>0 && preDiff<=0 || curDiff<0 && preDiff>=0){
count++;
preDiff=curDiff;
}
}
return count;
}
}
53. 最大子序和
class Solution {
public int maxSubArray(int[] nums) {
int n = nums.length;
if(n==1){
return nums[0];
}
int total =Integer.MIN_VALUE;
int count =0;
for(int i=0;i<n;i++){
count += nums[i];
total = Math.max(count,total);
if(count<=0){
count=0;
}
}
return total;
}
}