leetcode 之Candy(12)
LeetCode 12
2023-09-14 08:57:33 时间
这题的思路很巧妙,分两遍扫描,将元素分别和左右元素相比较。
int candy(vector<int> &rattings) { int n = rattings.size(); vector<int> incrment(n); int inc = 1; //和左边比较 for (int i = 1; i < n; i++) { if (rattings[i]>rattings[i - 1]) incrment[i] = max(inc++, incrment[i]); else inc = 1; } inc = 1; //和右边比较(把漏掉的第一个补上) for (int i = n - 2; i >= 0; i--) { if (rattings[i] > rattings[i + 1]) incrment[i] = max(inc++, incrment[i]); else inc = 1; } //每人至少一个(将incrment的元素相加,再加上n) return accumulate(&incrment[0], &incrment[0] + n, n); }
相关文章
- Java实现 LeetCode 461 汉明距离
- Java实现 LeetCode 459 重复的子字符串
- Java实现 LeetCode 38 外观数列
- Java实现 LeetCode 12 整数转罗马数字
- LeetCode(12):整数转罗马数字
- 每日一道 LeetCode (26):路径总和
- 每日一道 LeetCode (12):最大子序和
- LeetCode-386. 字典序排数【深度优先遍历,递归】
- 【LeetCode 12】整数转罗马数字
- [LeetCode] 382. 链表随机节点 ☆☆☆(随机算法:蓄水池抽样)
- 【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
- 【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
- 【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径