题解 | #分糖果问题#

分糖果问题

http://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352

public:
    /**
     * pick candy
     * @param arr int整型vector the array
     * @return int整型
     */
    int candy(vector<int>& arr) {
        // write code here
        vector<int>nums(arr.size(),1);//把容器初始化,构造长度为原来大小的元素初始化为1 的容器
        for(int i = 1;i<arr.size();i++)//
        {
            if(arr[i-1]<arr[i])
            {
                nums[i] = nums[i-1]+1;//从左边先遍历一遍数组,把右边的数组的值都变得要比左边的大,方便再左边进行遍历的时候不会导致,出现右边的分数比左边的大,但是所得到的苹果却比左边的少的情况
            }
            
         }
         for(int i =arr.size()-1;i>=0;i--)
         {
                if(arr[i-1]>arr[i]&&nums[i-1]<=nums[i])
                {
                    nums[i-1]=nums[i]+1;//从右边开始遍历一便数组,当左边的分数比右边的分数多的时候,但得到的苹果数目却和右边的苹果数目一样甚至更少的情况,把么就需要将左边的数组的数目加1
                }
         }
        int sum = 0;
          for(int i =0;i<nums.size();i++)
          {
              sum+=nums[i];//最后遍历苹果的数组,得到最后的苹果的数目之和,即为最少的苹果数目
          }
       return sum;
        
   
    }
};
全部评论

相关推荐

在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务