2018-08-19 LeetCode 贪心算法

老师想给孩子们分发糖果,有 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()][]);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • “南国有巧匠,其琴可号群兽,夺命无形,天下共逐之。” (一) 她还是不愿意见他。自从那件事后,他们再也没有见过一面...
    绯彥阅读 748评论 0 8
  • 孩子,是一生最大的事业。 对于这句话,若已为人父母,应该都是认可的。很多人都把自己的100%,送给了自己的孩子,可...
    竹中剑阅读 775评论 0 0
  • 因为心中有很多东西,所以,我才会触碰到文字的笔。 今天,我才发觉,无论过去的日记,还是今...
    幸福公主阅读 446评论 1 2