Day 31 | 贪心算法 理论基础 、455.分发饼干 、 376. 摆动序列 、 53. 最大子序和

理论基础

文章讲解

455.分发饼干

题目
文章讲解
视频讲解

思路:从小饼干开始喂小胃口

java 复制代码
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. 摆动序列

题目
文章讲解
视频讲解

思路:初始时preDiff可能为0

java 复制代码
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;
    }
}

53. 最大子序和

题目
文章讲解
视频讲解

思路:在处理负数的情况下,对于任何负数,如果将其加入当前的和中,都会导致和变小。因此,如果当前的和已经为负数,那么加上任何负数都不会使和变大,因此应该将当前的 count 重置为0

java 复制代码
class Solution {
    public int maxSubArray(int[] nums) {
        if (nums.length == 1){
            return nums[0];
        }
        int sum = Integer.MIN_VALUE;
        int count = 0;
        for (int i = 0; i < nums.length; i++){
            count += nums[i];
            sum = Math.max(sum, count); // 取区间累计的最大值(相当于不断确定最大子序终止位置)
            if (count <= 0){
                count = 0; // 相当于重置最大子序起始位置,因为遇到负数一定是拉低总和
            }
        }
       return sum;
    }
}
相关推荐
cici1587418 分钟前
大规模MIMO系统中Alamouti预编码的QPSK复用性能MATLAB仿真
算法·matlab·预编码算法
历程里程碑25 分钟前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
2501_940315262 小时前
航电oj:首字母变大写
开发语言·c++·算法
CodeByV2 小时前
【算法题】多源BFS
算法
TracyCoder1232 小时前
LeetCode Hot100(18/100)——160. 相交链表
算法·leetcode
浒畔居2 小时前
泛型编程与STL设计思想
开发语言·c++·算法
独处东汉3 小时前
freertos开发空气检测仪之输入子系统结构体设计
数据结构·人工智能·stm32·单片机·嵌入式硬件·算法
乐迪信息3 小时前
乐迪信息:AI防爆摄像机在船舶监控的应用
大数据·网络·人工智能·算法·无人机
放荡不羁的野指针3 小时前
leetcode150题-滑动窗口
数据结构·算法·leetcode
小龙报3 小时前
【C语言进阶数据结构与算法】单链表综合练习:1.删除链表中等于给定值 val 的所有节点 2.反转链表 3.链表中间节点
c语言·开发语言·数据结构·c++·算法·链表·visual studio