美文网首页
2018-08-19 LeetCode 贪心算法

2018-08-19 LeetCode 贪心算法

作者: 菜鸡学算法 | 来源:发表于2018-08-19 22:55 被阅读0次

老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。
你需要按照以下要求,帮助老师给这些孩子分发糖果:
每个孩子至少分配到 1 个糖果。
相邻的孩子中,评分高的孩子必须获得更多的糖果。
那么这样下来,老师至少需要准备多少颗糖果呢?
//分数一样的不用给一样的数量,可以只给1

class Solution {
    public int candy(int[] ratings) {
        if(ratings==null||ratings.length==0){
            return 0;
        }
        int len = ratings.length;
        int[] candy = new int[len];
        candy[0]=1;
        //从左至右,右边的比左边的大,就可以把右边的糖果数量设置为左边的加1
        for(int i=1;i<len;i++){
            if(ratings[i]>ratings[i-1]){
                candy[i]=candy[i-1]+1;
            }else{
                candy[i]=1;
            }
        }
        //从右边到左边,左边比右边的大,并且原来左边的糖果数量小于等于右边的,就可以把左边的糖果数量设置为右边的加1;
        for(int i=len-2;i>=0;i--){
            if((ratings[i]>ratings[i+1])&& (candy[i]<=candy[i+1])){
                candy[i]=candy[i+1]+1;
            }
        }
        int res=0;
        for(int i=0;i<len;i++){
            res+=candy[i];
        }
        return res;
    }
}

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。
按照h从高到低,k从小到大排序,依次插入到list的k位置

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        if(people == null || people.length == 0 || people[0].length == 0)
            return new int[0][0];

        Arrays.sort(people, new Comparator<int[]>(){
            public int compare(int[] o1, int[] o2) {
                if (o1[0] == o2[0]) return o1[1] - o2[1];
                return o2[0] - o1[0];
            }
        });

        int n = people.length;
        ArrayList<int[]> tmp = new ArrayList<>();

        for(int i = 0; i < n; i++)
            tmp.add(people[i][1], people[i]);

        return tmp.toArray(new int[tmp.size()][]);
    }
}

相关文章

  • 2018-08-19 LeetCode 贪心算法

    老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求...

  • ARTS 20210104-0109

    Algorithm: 每周至少做一个 LeetCode 的算法题LeetCode 435 无重叠区间使用贪心算法解...

  • A-LeetCode-算法-总纲

    前言: 标签说明,A为困难,B为中等,C为简单 1、子目录纲要(算法) 1、A-LeetCode-算法-贪心算法[...

  • 贪心算法 03

    贪心算法 03 [https://imgchr.com/i/yt0vrQ] [https://leetcode-c...

  • 322. 零钱兑换【动态规划】【BFS】

    https://leetcode-cn.com/problems/coin-change/首先常见的贪心算法不合适...

  • 贪心算法

    介绍 介绍来自 LeetCode 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也...

  • 大厂算法面试之leetcode精讲4.贪心

    大厂算法面试之leetcode精讲4.贪心 视频教程(高效学习):点击学习[https://xiaochen102...

  • LeetCode进阶1029-贪心

    概要 上一篇博客《LeetCode进阶944-贪心》,有朋友提出建议944对理解贪心算法并不具有很强的代表性。回顾...

  • 452. 用最小的数量引爆气球(Python)

    题目 难度:★★☆☆☆类型:数组方法:贪心算法 力扣链接请移步本题传送门[https://leetcode-cn....

  • 991. 坏了的计算器(Python)

    难度:★★★☆☆类型:数学方法:贪心算法 题目 力扣链接请移步本题传送门[https://leetcode-cn....

网友评论

      本文标题:2018-08-19 LeetCode 贪心算法

      本文链接:https://www.haomeiwen.com/subject/rmphiftx.html