leetcode-zgd-day31-455.分发饼干/376.摆动序列/52.最大子数组和

49 阅读1分钟

455.分发饼干

题目链接:Loading Question... - 力扣(LeetCode)

解题思路:局部最优就是全局最优

 class Solution {
     public int findContentChildren(int[] g, int[] s) {
         int i = g.length - 1;
         int j = s.length - 1;
         int ans = 0;
         Arrays.sort(g);
         Arrays.sort(s);
         while(i >= 0 && j >= 0){
             if(g[i] <= s[j]){
                 ans++;
                 i--;
                 j--;
             }
             else{
                 i--;
             }
         }
         return ans;
     }
 }

376.摆动序列

题目链接:Loading Question... - 力扣(LeetCode)

解题思路:默认最右边的值是属于摆动序列的。第一个结点的preDiff默认为0

 class Solution {
     public int wiggleMaxLength(int[] nums) {
         int curDiff = 0;
         int preDiff = 0; // 这个可能为0,起始位置默认它为0
         int result = 1;
         for(int i = 0; i < nums.length - 1; i++){
             curDiff = nums[i + 1] - nums[i];
             if((curDiff > 0 && preDiff <= 0) || (preDiff >= 0 && curDiff < 0)){
                 result++;
                 preDiff = curDiff;
             }
         }
         return result;
     }
 }

52.最大子数组和

题目链接:Loading Question... - 力扣(LeetCode)

解题思路:

 class Solution {
     public int maxSubArray(int[] nums) {
         // 就是一个求和的过程,当和小于0就直接抛弃前面的,负值归零
         int ans = Integer.MIN_VALUE;
         int sum = 0;
         for(int i = 0; i < nums.length; i++){
             sum += nums[i];
             ans = Math.max(ans,sum);
             if(sum < 0) sum = 0;
         }
         return ans;
     }
 }