题解 | #分糖果问题#

分糖果问题

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

O(n), O(1), slope算法。重点:

if down >= peak:
    res += 1      

这一部分考虑了下降超过上升数的情况

#
# pick candy
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def candy(self , arr ):
        # write code here
        n = len(arr)
        up, down = 0, 0
        res, peak = 1, 1
        print(0, up, down, peak, res)
        for i in range(1, n):

            if arr[i] > arr[i-1]:
                down=0
                up += 1
                res += up+1
                peak = up+1
            elif arr[i] < arr[i-1]:
                up=0
                down += 1
                res += down
                if down >= peak:
                    res += 1                
            else:
                res += 1
                peak = 1
                up, down = 0, 0
            print(i, up, down, peak, res)
        return res
全部评论

相关推荐

07-15 12:24
重庆大学 运营
坏消息:和好工作擦肩而过
给点吧求求了:怎么可能因为差几秒,估计就是简历更好看婉拒了
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
弦五Strings:他之所以会举报你代课是因为在这种人眼里正常上课就是正义代课就是邪恶,典型二极管思维,处理方法就是私下沟通,你就说你自己家里经济困难或者家里父母生病什么之类的,需要去打工挣钱,用尽孝的正义对冲他认为的上课的正义,他可能就妥协了。
我的实习日记
点赞 评论 收藏
分享
07-15 11:41
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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