zoukankan      html  css  js  c++  java
  • leetcode 135 分发糖果

     每个人至少要有一个,每个人先给一个。从左到右扫一遍,左比右小则右加1,但此时如果左比右大并没有更新左,所以还需要从右到左走一次,如果左边的值比右边的大,但是左边的糖果却不比右边的多,就把左边的糖果更新为右边的加1.

     1 class Solution {
     2 public:
     3     int candy(vector<int>& ratings) {
     4         int len=ratings.size();
     5         vector<int> res(len,1);
     6         for(int i=0;i<len-1;i++)
     7         {
     8             if(ratings[i]<ratings[i+1])
     9             {
    10                 res[i+1]=res[i]+1;
    11             }
    12         }
    13         for(int i=len-1;i>0;i--)
    14         {
    15             if(ratings[i]<ratings[i-1] && res[i]>=res[i-1])
    16             {
    17                 res[i-1]=res[i]+1;
    18             }
    19         }
    20         int all=0;
    21         for(int j=0;j<len;j++)
    22         {
    23             all+=res[j];
    24         }
    25         return all;
    26     }
    27 };
    每天进步一点点~
  • 相关阅读:
    Dockerfile基于centos镜像编译安装httpd
    Dockerfile基于centos镜像编译安装nginx
    Dockerfile介绍和常用指令
    Docker存储卷
    正则表达式
    Sed与Awk
    Shell函数
    Shell脚本基础
    Autofs
    Podman
  • 原文地址:https://www.cnblogs.com/libin123/p/14640196.html
Copyright © 2011-2022 走看看