算法题——贪心算法

455.分发饼干

将饼干和胃口都排序,让小的饼干优先喂给胃口小的,这样能满足的孩子最多

java 复制代码
class Solution {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int res = 0;
        int gIndex=0;
        int sIndex=0;
        while(gIndex<g.length && sIndex<s.length){
            if(s[sIndex]>=g[gIndex]){
                res++;
                sIndex++;
                gIndex++;
            }else{
                sIndex++;
            }
        }
        return res;
    }
}

376.摆动序列

用count记录出现摆动序列的个数,起始有一个,用prediff记录上一次非0差值的符号,每次判断符号是否相同,若不同则count+1,同时更新prediff

java 复制代码
class Solution {
    public int wiggleMaxLength(int[] nums) {
        if(nums.length<=1) return nums.length;
        int count = 1; //最少有一个摆动序列
        int prediff = 0;
        for(int i=1;i<nums.length;i++){
            int diff = nums[i]-nums[i-1];
            if(prediff>=0 && diff<0 || prediff<=0 && diff>0){
                count++;
                prediff = diff;
            }
        }
        return count;
    }
}

53.最大子数组和

遍历数组的过程中,如果目前的子数组之和小于或等于0,那么这一段一定不在最大子数组中,因为这会拉低最大子数组的和,因此每次该记录最大和还是记录到res中,但如果sum<=0,就需要重置子数组的起始位置(将sum置为0即可,意思是重新算一个子数组)

java 复制代码
class Solution {
    public int maxSubArray(int[] nums) {
        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; //如果子数组和不大于0,那么这段子数组一定不在目标子数组中,重置起始位置和sum
        }
        return res;
    }
}
相关推荐
2401_891482174 小时前
多平台UI框架C++开发
开发语言·c++·算法
88号技师4 小时前
2026年3月中科院一区SCI-贝塞尔曲线优化算法Bezier curve-based optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
t198751284 小时前
三维点云最小二乘拟合MATLAB程序
开发语言·算法·matlab
x_xbx5 小时前
LeetCode:148. 排序链表
算法·leetcode·链表
Darkwanderor5 小时前
三分算法的简单应用
c++·算法·三分法·三分算法
2401_831920745 小时前
分布式系统安全通信
开发语言·c++·算法
WolfGang0073216 小时前
代码随想录算法训练营 Day17 | 二叉树 part07
算法
温九味闻醉6 小时前
关于腾讯广告算法大赛2025项目分析1 - dataset.py
人工智能·算法·机器学习
炽烈小老头6 小时前
【 每天学习一点算法 2026/03/23】数组中的第K个最大元素
学习·算法·排序算法
老鱼说AI6 小时前
大规模并发处理器程序设计(PMPP)讲解(CUDA架构):第四期:计算架构与调度
c语言·深度学习·算法·架构·cuda