当前位置: 首页 > news >正文

【贪心算法1】

力扣455.分发饼干

链接: link

思路

尽可能让更多人吃到饼干并且尽可能少的造成浪费,大尺寸饼干能满足大胃口的人就应该优先分给大胃口的人。所以先将饼干和胃口大小排序,然后从后往前遍历。但是这时候又有一个问题,饼干和胃口哪个作为for循环哪个作为if呢?答案是只能胃口作为for,饼干作为if,因为for循环的i是固定每次移动,而饼干index只有满足条件才会移动。这里可以举一个反例,如果最大胃口大于最大的饼干,以饼干为for循环,胃口为if,那么for循环遍历下来,所有人都分不到饼干。

方法1:

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int index = s.length - 1;
        int cnt = 0;
        // 遍历胃口
        for(int i = g.length - 1;i>=0;i--){
            if(index>=0&&s[index]>=g[i]){
                cnt++;
                index--;
            }
        }
        return cnt;
    }
}

376.摆动序列
链接: link

思路

这道题看起代码简单,但是要考虑的情况很多,直接参考链接内容吧

class Solution {
    public int wiggleMaxLength(int[] nums) {
        if (nums.length <= 1) {
            return nums.length;
        }
        // 当前节点 - 前一个节点
        int pre = 0;
        // 后一个节点 - 当前节点
        int next = 0;
        int res = 1;
        for (int i = 0; i < nums.length - 1; i++) {
            next = nums[i + 1] - nums[i];
            // 出现峰值
            if ((pre >= 0 && next < 0) || (pre <= 0 && next > 0)) {
                res++;
                pre = next;
            }
        }
        return res;
    }
}

53.最大子数组和
链接: link

class Solution {
    public int maxSubArray(int[] nums) {
        if(nums.length == 1){
            return nums[0];
        }
        int sum = Integer.MIN_VALUE;
        int cnt = 0;
        for(int i = 0;i<nums.length;i++){
            cnt += nums[i];
            if(cnt>=sum){
                sum = cnt;
            }
            if(cnt<0){ // 注意 只有区间和为负数时才会重置
                cnt = 0;
            }
        }
        return sum;
    }
}

相关文章:

  • 计算机毕业设计Python+DeepSeek-R1大模型空气质量预测分析(源码+文档+PPT+讲解)
  • Linux网络环境配置及常用命令
  • 基于Spring Boot的共享学习经验系统的设计与实现
  • 视频录像机视频通道是指什么
  • 【leetcode100】组合总和Ⅲ
  • 论坛社区基础版【项目测试报告】
  • 【YOLOv12改进trick】StarBlock引入YOLOv12,创新涨点优化,含创新点Python代码,方便发论文
  • django中路由配置规则的详细说明
  • 混合存储HDD+SSD机型磁盘阵列,配上SSD缓存功能,性能提升300%
  • Matlab—从入门到精通的第一天
  • 【AI深度学习基础】PyTorch初探
  • 分布式系统设计(架构能力)
  • 用Python分割并高效处理PDF大文件
  • 【kaggle机器学习实战--降雨数据集的二分类建模,内含插值法和二分类各种评估指标的可视化详解】
  • C++:#ifndef 头文件保护机制详解
  • visual studio下载安装
  • Vue3自定义hooks
  • SAP-ABAP:SAP的生产计划模块PP的bapi详细介绍及使用场景
  • SpringUI高保真动态交互元件库:助力产品原型设计
  • 数据结构 常见的排序算法
  • 揭阳网站制作软件/百度的企业网站
  • 做网站先做首页/万网查询
  • 做机械毕业设计哪个网站好/百度做广告费用
  • 怎么样免费做网站/做运营需要具备什么能力
  • 手机怎么复制网站模板/网络推广一般都干啥
  • 做网站做电脑版还是手机版好/seo对网络推广的作用是什么?