题解 | #分糖果问题#

分糖果问题

https://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352?tpId=295&tqId=1008104&ru=%2Fpractice%2F31c1aed01b394f0b8b7734de0324e00f&qru=%2Fta%2Fformat-top101%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj

独立写出来,思路有点借鉴单调栈的思路

class Solution {
public:
    /**
     * pick candy
     * @param arr int整型vector the array
     * @return int整型
     */
    int candy(vector<int>& arr) {
      int res = 0;
      //  dp[i] 代表第i个孩子分的的糖果数
      std::vector<int> dp(arr.size(), 1);
      
      //  需要和两边的人比,这里如果比两边的都高,那么需要比旁边最高的人多1
      //  使用两次比较,一次从左到右,一次从右到左,确保每个人对应的糖果能够比旁边分低的高
      for (int i = 1; i < arr.size(); ++i) {
        if (arr[i] > arr[i - 1]) {
          dp[i] = dp[i - 1] + 1;
        }
      }
      
      for (int i = arr.size() - 2; i >= 0; --i) {
        if (arr[i] > arr[i + 1]) {
          dp[i] = std::max(dp[i], dp[i + 1] + 1);
        }
      }
      
      for (int i = 0; i < arr.size(); ++i) {
        res += dp[i];
      }
      
      return res;
    }
};
全部评论

相关推荐

下周有2个待面,自我介绍就是开始紧张,总容易嘴瓢朋友们有啥面试不紧张的办法吗?
mama3925:boss投小厂,使劲练自我介绍和实习介绍,以及相关的场景题和系统设计。八股可以和豆包练
点赞 评论 收藏
分享
学习java也有半年多了,现在准备秋招试一试,不行的话就再实习一段准备春招,大佬们帮忙看看简历呗,感觉很多笔试做的还行但是还是挂了,是不是简历有问题啊
应欢欢yhh:我打算实习和秋招一起找了。名企秋招还是太难了,中小公司就没有秋招一说吧,基本上都是实习转正的offer。我想如果先找到实习我就去,在刷一段实习经历,在这个过程中同步投秋招。
我的简历长这样
点赞 评论 收藏
分享
点赞 评论 收藏
分享
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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