首页 > 编程语言 >代码随想录算法训练营 | 贪心算法:455.分发饼干,376. 摆动序列,53. 最大子序和

代码随想录算法训练营 | 贪心算法:455.分发饼干,376. 摆动序列,53. 最大子序和

时间:2024-10-02 12:00:53浏览次数:1  
标签:count nums int 随想录 455 算法 length 子序

455.分发饼干
题目链接:455.分发饼干
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰分发饼干
日期:2024-10-02

想法:大饼干喂大孩子
Java代码如下:

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

376. 摆动序列
题目链接:376. 摆动序列
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰摆动序列
日期:2024-10-02

想法:考虑平坡, 平坡分两种,一个是上下中间有平坡,一个是单调有平坡
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];
            if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) {
                count++;
                preDiff = curDiff;
            }
        }
        return count;
    }
}

53. 最大子序和
题目链接:53. 最大子序和
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰最大子序和
日期:2024-10-02

想法:局部最优:和为负则舍弃当前区间,从下一个重新开始算。
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;
    }
}

标签:count,nums,int,随想录,455,算法,length,子序
From: https://www.cnblogs.com/wowoioo/p/18444546

相关文章

  • 代码随想录算法训练营 | 491.递增子序列,46.全排列,47.全排列 II
    491.递增子序列题目链接:491.递增子序列文档讲解︰代码随想录(programmercarl.com)视频讲解︰491.递增子序列日期:2024-10-02想法:根据题目nums[i]的范围在-100到100,可以用数组做记录是否同一层使用过Java代码如下:classSolution{List<Integer>path=newArrayList<>();......
  • 代码随想录算法-回溯4
    题目1491.非递减子序列给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例1:输入:nums=[4,6,7,7]输出:[[4,6],[4......
  • 代码随想录算法训练营第六天|242.有效的字母异位词 ● 349. 两个数组的交集 ● 202.
    ​学习链接:https://programmercarl.com/哈希表理论基础.html学习笔记:遇到“要判断一个值是否在集合中出现过”的问题时,可以考虑hash表。hash表的形式包括数组、set、dict。当数的位数比较统一、或比较小,可用数组,快;当数的位数可变,可用set;当要同时考虑数的下标和值,可以用dict。......
  • 快速排序算法及多线程试验
    1)快速排序算法算法实现:选定一个起点/终点位置上的数A小于数A的放在A左侧,大于的放在右侧对A左侧和右侧数组递归的执行步骤2//分区函数template<typenameT>intpartition(Tarr[],intlength){ if(length<=1) return1; inti=1; intj=length-1; //se......
  • 文心一言 VS 讯飞星火 VS chatgpt (359)-- 算法导论24.3 1题
    一、在图24-2上运行Dijkstra算法,第一次使用结点作为源结点,第二次使用结点作为源结点。以类似于图24-6的风格,给出每次while循环后的值和值,以及集合中的所有结点。如果要写代码,请用go语言。文心一言:在图24-2上运行Dijkstra算法,我们可以模拟算法的执行过程,并给出每次while循......
  • 通过码流串,格式为key,len,val。提供key,查找val的算法。
    1importjava.util.ArrayList;2importjava.util.HashMap;3importjava.util.UUID;45publicclassHuaweiTest{67publicstaticvoidmain(String[]args){8//System.out.println("HelloWorld!");9Strin......
  • 通过码流串,格式为key,len,val。提供key,查找val的算法。
    importjava.util.ArrayList;importjava.util.HashMap;importjava.util.UUID;publicclassHuaweiTest{publicstaticvoidmain(String[]args){//System.out.println("HelloWorld!");Stringtag="31";Stri......
  • 【优选算法】(第十二篇)
    目录搜索旋转排序数组中的最⼩值(medium)题目解析讲解算法原理编写代码0〜n-1中缺失的数字(easy)题目解析讲解算法原理编写代码搜索旋转排序数组中的最⼩值(medium)题目解析1.题目链接:.-力扣(LeetCode)2.题目描述:整数数组nums按升序排列,数组中的值互不相同。在传......
  • 【优选算法】(第十三篇)
    目录【模板】⼀维前缀和(easy)题目解析讲解算法原理编写代码【模板】⼆维前缀和(medium)题目解析讲解算法原理编写代码【模板】⼀维前缀和(easy)题目解析1.题目链接:【模板】前缀和_牛客题霸_牛客网2.题目描述讲解算法原理解法(前缀和):算法思路:a.先预处理出来⼀......
  • 【优选算法】(第十四篇)
    目录寻找数组的中⼼下标(easy)题目解析讲解算法原理编写代码除⾃⾝以外数组的乘积(medium)题目解析讲解算法原理编写代码寻找数组的中⼼下标(easy)题目解析1.题目链接:.-力扣(LeetCode)2.题目描述给你⼀个整数数组nums,请计算数组的中⼼下标。数组中⼼下标是数组的⼀......