贪心算法part04 算法

这篇具有很好参考价值的文章主要介绍了贪心算法part04 算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

贪心算法part04 算法

● 860.柠檬水找零
● 406.根据身高重建队列
● 452. 用最少数量的箭引爆气球

1.leetcode 860.柠檬水找零

https://leetcode.cn/problems/lemonade-change/description/

class Solution {
    public boolean lemonadeChange(int[] bills) {
        //看能不能找零
        //bills[i] 不是 5 就是 10 或是 20 ,已经固定好了
        //遇见5,我们就直接收起来
        //遇见10我们就找张5块的给他,10元收起来
        //遇见20我们就两种找零方式,优先10+5,再5+5+5
        
        //计每种面额的数量
        int five=0;
        int ten=0;
        int twenty=0;
        for(int i=0;i<bills.length;i++){
            if(bills[i]==5){
                five++;
            }else if(bills[i]==10){
                if(five>0){
                    //有钱可以找
                    five--;
                    ten++;
                }else{
                    //没钱可以找零
                    return false;
                }
            }else if(bills[i]==20){
                if(ten>0&&five>0){
                    //可以找
                    ten--;
                    five--;
                    twenty++;
                }else if(five>=3){
                    //三张五块的,也可以找
                    five=five-3;
                    twenty++;
                }else{
                    //没得找零
                    return false;
                }
            }
        }
        //上面都没有返回false
        //那就是都能被找零
        return true;
    }
}

2.leetcode 406.根据身高重建队列

https://leetcode.cn/problems/queue-reconstruction-by-height/description/

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        //身高从大到小排,(身高相同的k小的站i前面)
        Arrays.sort(people,(a,b)->{
            if(a[0]==b[0]){
                //身高相同
                return a[1]-b[1];
            }
            return b[0]-a[0];//b-a是降序排列
        });
        //定义一个存放结果的变量
        LinkedList<int[]> result=new LinkedList<>();
        for(int i=0;i<people.length;i++){
            //将k有值的,不为0的插到对应的位置
            //记录要插入的位置
            int pesition=people[i][1];//也就是k
            result.add(pesition,people[i]);//将值插到指定index去  index,value
        }
        return result.toArray(new int[people.length][]);
    }
}

3.leetcode 452. 用最少数量的箭引爆气球

https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/description/文章来源地址https://www.toymoban.com/news/detail-797777.html

class Solution {
    public int findMinArrowShots(int[][] points) {
        //画图模拟过程才好容易理解
        //如果都没气球,那么都不用射箭
        if(points.length==0){return 0;}
        //对气球的左边界进行排序
        Arrays.sort(points,(a,b)->Integer.compare(a[0],b[0]));
        //point气球不为空至少需要一只箭
        int count=1;
        for(int i=1;i<points.length;i++){
            //i从1开始
            //如果现在的气球左区间大于上一个气球的右区间
            if(points[i][0]>points[i-1][1]){
                //证明没有重叠
                count++;
            }else{
                //气球重叠了,那就更新右区间
                points[i][1]=Math.min(points[i][1],points[i-1][1]);
            }
        }
        return count;
    }
}

到了这里,关于贪心算法part04 算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Day27- 贪心算法part01

    题目一:455. 分发饼干 455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子  i ,都有一个胃口值  g[i] ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干  j ,都有一个尺寸  s[j]  。如果  s

    2024年01月18日
    浏览(37)
  • Day29- 贪心算法part03

    题目一:1005. K 次取反后最大化的数组和 1005. K 次取反后最大化的数组和 给你一个整数数组  nums  和一个整数  k  ,按以下方法修改该数组: 选择某个下标  i  并将  nums[i]  替换为  -nums[i]  。 重复这个过程恰好  k  次。可以多次选择同一个下标  i  。 以这种方式修改

    2024年01月20日
    浏览(44)
  • Day32 贪心算法part02

    太牛了我,随随便便双指针秒杀 md题解里面双指针都没用直接for循环秒杀 写成这样纯粹是没有看到第一次跳跃必须从第一个开始

    2024年02月20日
    浏览(39)
  • Day32- 贪心算法part06

    题目一:738. 单调递增的数字  738. 单调递增的数字 当且仅当每个相邻位数上的数字  x  和  y  满足  x = y  时,我们称这个整数是 单调递增 的。 给定一个整数  n  ,返回  小于或等于  n  的最大数字,且数字呈  单调递增  。 从高位到低位遍历整数 n 的每一位数字,当

    2024年01月22日
    浏览(46)
  • Day31- 贪心算法part05

    题目一:453. 无重叠区间  435. 无重叠区间 给定一个区间的集合  intervals  ,其中  intervals[i] = [starti, endi]  。返回  需要移除区间的最小数量,使剩余区间互不重叠  。 主要思想是优先保留结束时间早的区间,这样留给其他区间的空间就更多,从而减少需要移除的区间数量

    2024年01月19日
    浏览(43)
  • Day37 贪心算法part06

    前面都想到了,结果最后n[i]给写错了直接写成9了,得把后面的全都改成9才行 摄像头的覆盖范围是上中下 遇到叶子结点,放到叶子结点的父节点 每隔两个空节点放一个摄像头 所以要用后序遍历 把结点分为三个状态:0无覆盖1有摄像头2有覆盖 空节点要设置为有覆盖的状态

    2024年02月19日
    浏览(45)
  • Day36 贪心算法 part05

    一个字母区间仅有几个字母 前一个字母区间有的字母后面都没有 天才举一反三写出来了

    2024年02月19日
    浏览(54)
  • Day28- 贪心算法part02

    题目一:122. 买卖股票的最佳时机II 122. 买卖股票的最佳时机 II 给你一个整数数组  prices  ,其中  prices[i]  表示某支股票第  i  天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候  最多  只能持有  一股  股票。你也可以先购买,然后在  同一天  

    2024年01月15日
    浏览(46)
  • 【随想录】Day34—第八章 贪心算法 part03

    题目链接:1005. K 次取反后最大化的数组和 贪心思路 : 先对数组中的元素进行排序 遍历数组,如果 当前遍历的位置值 0 k0 直接变号,之后对 k 进行 -- 如果不小于 0 ,此时需要先排序,判断 k 是否为奇数,如果是奇数直接对最小位进行取反 最终遍历数组求和 ⭐ K 次取反后最

    2024年04月27日
    浏览(42)
  • 算法训练day37|贪心算法 part06(LeetCode738.单调递增的数字)

    题目链接🔥🔥 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。 (当且仅当每个相邻位数上的数字 x 和 y 满足 x = y 时,我们称这个整数是单调递增的。) 示例 1: 输入: N = 10 输出: 9 示例 2: 输入: N = 1234 输出:

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包