博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode: Candy
阅读量:4556 次
发布时间:2019-06-08

本文共 1409 字,大约阅读时间需要 4 分钟。

这题就是从左到右对递增的点进行刷点,再从右到左对递增的点进行刷点。时间复杂度和空间复杂度都为O(n)。注意如果两个相邻的点ratings一样,则不必保持candy数一样(个人认为很不合理).

1 class Solution { 2 public: 3     int candy(vector
&ratings) { 4 // IMPORTANT: Please reset any member data you declared, as 5 // the same Solution instance will be reused for each test case. 6 vector
res(ratings.size(), 1); 7 for (int i = 1; i < ratings.size(); i++) 8 if (ratings[i] > ratings[i-1]) res[i] = res[i-1] + 1; 9 for (int i = ratings.size()-2; i >= 0; i--) 10 if (ratings[i] > ratings[i+1]) res[i] = max(res[i], res[i+1] + 1);11 int ans = 0;12 for (int i = 0; i < res.size(); i++) ans += res[i];13 return ans;14 }15 };

 C#

1 public class Solution { 2     public int Candy(int[] ratings) { 3         int[] res = new int[ratings.Length]; 4         for (int i = 0; i < ratings.Length; i++) res[i] = 1; 5         for (int i = 1; i < ratings.Length; i++) { 6             if (ratings[i] > ratings[i-1]) res[i] = res[i-1] + 1; 7         } 8         for (int i = ratings.Length-2; i >= 0; i--) { 9             if (ratings[i] > ratings[i+1]) res[i] = Math.Max(res[i], res[i+1] + 1);10         }11         int ans = 0;12         for (int i = 0; i < res.Length; i++) ans += res[i];13         return ans;14     }15 }
View Code

 

转载于:https://www.cnblogs.com/yingzhongwen/p/3403156.html

你可能感兴趣的文章
人之初,性本恶
查看>>
springboot 端口号
查看>>
使用AChartEngine画动态曲线图
查看>>
安卓项目五子棋代码详解(四)
查看>>
urllib 学习一
查看>>
bzoj4196 [Noi2015]软件包管理器——树链剖分
查看>>
kafka源码阅读环境搭建
查看>>
UI设计
查看>>
androidtab
查看>>
Windows Phone 自定义弹出框和 Toast 通知
查看>>
如何生成静态页面的五种方案
查看>>
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
让我们再聊聊浏览器资源加载优化
查看>>
underscore demo
查看>>
CSS hack
查看>>
C# Enum Name String Description之间的相互转换
查看>>
PHP wamp server问题
查看>>
Spring Data Redis学习
查看>>