135. Candy(Array; Sort)

There are N children standing in a line. Each child is assigned a rating value.

You are giving candies to these children subjected to the following requirements:

  • Each child must have at least one candy.
  • Children with a higher rating get more candies than their neighbors.

What is the minimum candies you must give?

思路:neighbor=>元素值与前、后元素有关=>前向、后向两次扫描。

class Solution {
public:
    int candy(vector<int> &ratings) {
        vector<int> new_ratings(ratings.size(), 1);
        for(int i = 1; i < ratings.size(); i++) //for the first time, scan from beginning
        {
            if(ratings[i] > ratings[i-1])
            {
                new_ratings[i] = new_ratings[i-1]+1;
            }

        }
        for(int i=ratings.size()-2;i>=0;i--){  //for the second time, scan from the end
            if(ratings[i]>ratings[i+1]&&new_ratings[i]<=new_ratings[i+1]){
                new_ratings[i]=new_ratings[i+1]+1;
            }
        }
        int sum=0;
        for(int i=0;i<new_ratings.size();i++){
            sum+=new_ratings[i];
        }  

        return sum;
    }
};
时间: 2024-10-14 05:24:12

135. Candy(Array; Sort)的相关文章

LeetCode 135 Candy(贪心算法)

135. Candy There are N children standing in a line. Each child is assigned a rating value. You are giving candies to these children subjected to the following requirements: Each child must have at least one candy. Children with a higher rating get mo

C# 字典排序Array.Sort

Array.Sort可以实现便捷的字典排序,但如果完全相信他,那么就容易产生些异常!太顺利了,往往是前面有坑等你. 比如:微信接口,好多地方需要签名认证,签名的时候需要用的字典排序,如果只用Array.Sort()会出现签名异常的情况,而且是偶尔出现. 问题就在于他的排序默认没有区分大小写,这跟微信的签名将不匹配,所以还是需要自己实现比较的方法 public class DictionarySort : System.Collections.IComparer { public int Comp

C#中Array.Sort() 快速排序-源码分析

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. 之前提到过,Array的Sort()方法采用的是快速排序方法,通过使用.NET Reflector对程序集mscorlib进行解析,分析源码.

.NET Framework System.Array.Sort 演示

本文内容 自定义类 Array.Sort 参考资料 System.Array.Sort 有很多对集合的操作,比如排序,查找,克隆等等,你可以利用这个类加深对 IComparer.IComparable.ICloneable 以及泛型委托.匿名方法.Lambda 表达式的理解. 下载 Demo 自定义类 自定义后面用到的 Person 类和 PersonComparer 类. 自定义 Person 类,该类有两个属性:last name 和 first name,重构了 ToString 方法.P

ToUpperInvariant and Array.Sort

string[] words = { "Tuesday", "Sal?", "Вторник", "Mardi", "Τρ?τη", "Martes", "??? ?????", "????????", "?????????" }; StreamWriter sw = new StreamWriter(@".\outp

Array.Sort 谷歌内核 数组大小超过10 排序字段都一致 返回的数组非原数组

1.如果数据大小小于等于10 都正常 2.数据大小大于10 3.js中Array.sort的实现原理 定义:sort() 方法用于对数组的元素进行排序. api语法:arrayObject.sort(sortby):参数sortby可选,用于规定排序规则,必须是函数. 具体是如何实现的? V8 引擎 sort 函数只给出了两种排序分别是: InsertionSort 和 QuickSort,数组长度小于等于 10 的用插入排序 InsertionSort,比10大的数组则使用快速排序 Quick

javascript学习笔记之array.sort

arrayName.sort()方法: 功能是实现排序(按ascii编码或按数字大小),可无参或有参使用,无参时默认升序排列.有参时可实现升序或降序排列,参数必须是具有返回值的方法,当方法表达式大于0时将交换两数的顺序.即 arrayName.sort(表达式 { if(表达式>0) 交换顺序; else if(表达式<0) 不执行操作; else //表达式=0 根据浏览器支持选择具体操作; }); 其中表达式(==方法)将会决定排序原则,具体地实例是 arrayName.sort(func

Array.sort排序

Sorting an Array 1. 数字排序  int[] intArray = new int[] { 4, 1, 3, -23 }; Arrays.sort(intArray);     输出: [-23, 1, 3, 4] 2. 字符串排序,先大写后小写 String[] strArray = new String[] { "z", "a", "C" }; Arrays.sort(strArray); 输出: [C, a, z] 3.

php 多维数组 array sort 排序 :array_multisort

1.参考链接: php简单实现多维数组排序的方法 参考二: 这个链接很好,可以直接看这个:PHP array_multisort-对多个数组或多维数组进行排序 2.案例一: 1 //13: 最佳: 2 public function zjService() 3 { 4 //小组得分: 5 $team = array(); 6 //学生得分: 7 $student = array(); 8 9 //取出所有的小组: 10 $TeamModel = new TeamModel(); 11 $wher