题解 | #分糖果问题#

分糖果问题

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;
    }
};
全部评论

相关推荐

08-14 11:30
门头沟学院 Java
失去了成为米孝子的机会
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
08-19 13:57
门头沟学院 Java
两个小时诶...
投递米哈游等公司10个岗位
点赞 评论 收藏
分享
07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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