贪心算法part01 算法

贪心算法part01 算法

● 理论基础

● 455.分发饼干

● 376. 摆动序列

● 53. 最大子序和

1.leetcode455.分发饼干

https://leetcode.cn/problems/assign-cookies/description/

java 复制代码
class Solution {
    public int findContentChildren(int[] g, int[] s) {
        //因为是尽可能满足多的孩子
        Arrays.sort(g);
        Arrays.sort(s);
        //计数器
        int count=0;
        int startIndex=0;
        for(int i=0;i<s.length;i++){//饼干
            if(startIndex<=g.length-1&&g[startIndex]<=s[i]){//孩子
             count++;
             startIndex++;//孩子位置  
            }
            //没有进入if,那就是孩子位置没有变,而饼干将要向后一个位置
        }
        return count;
    }
}

2.leetcode376. 摆动序列

https://leetcode.cn/problems/wiggle-subsequence/description/

java 复制代码
class Solution {
    public int wiggleMaxLength(int[] nums) {
        //画图,上下坡
        //如果数组长度是0个或者1个,那么直接返回数组长度
        if(nums.length<=1){
            return nums.length;
        }
        //当前差值
        int curDiff=0;
        //上一个差值
        int preDiff=0;
        //累加结果
        int count=1;//最后一个已经包括
        for(int i=1;i<nums.length;i++){//因为下标为1的元素衔接上一个和当前的差值
            //得到当前差值
            curDiff=nums[i]-nums[i-1];
            //如果当前差值和上一个差值为一正一负的话
            //等于0的情况表示初始时的preDiff
            if((curDiff>0&&preDiff<=0)||(curDiff<0&&preDiff>=0)){
                count++;
                preDiff=curDiff;
            }
        }
        return count;
    }
}

3.leetcode53. 最大子序和

https://leetcode.cn/problems/maximum-subarray/description/

复制代码
class Solution {
    public int maxSubArray(int[] nums) {
        //找出一个具有最大和的连续子数组
        //连续
        //最大,那就每次都是最大的
        //用来保存结果,每次都是最大的
        int result=Integer.MIN_VALUE;
        //用来计数
        int sum=0;
        for(int i=0;i<nums.length;i++){
            //进行累加
            sum+=nums[i];
            if(result<sum){
                result=sum;
            }
            //当让整合为负数的时候,我们就舍弃掉重新出发
            if(sum<0){
                sum=0;
            }
        }
        return result;
    }
}
相关推荐
I_belong_to_jesus7 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Code_Solitude14 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司14 小时前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划
YLCHUP17 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
思麟呀17 小时前
背包DP(01背包+完全背包)
c++·算法
笑容掩饰我的失落18 小时前
区块链从小白到精通(七):Solidity 语法精讲——数据类型、函数、修饰器与事件
算法·区块链·php·智能合约·哈希算法
Pniubi19 小时前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
꧁细听勿语情꧂20 小时前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法
俊俊几年的20 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c