leetcode1144

 1 class Solution:
 2     def movesToMakeZigzag(self, nums: 'List[int]') -> int:
 3         n = len(nums)
 4         if n == 1:
 5             return 0
 6         elif n == 2:
 7             if nums[0] != nums[1]:
 8                 return 0
 9             else:
10                 return 1
11         else:
12             i = 0
13             sum1 = 0
14             #目标 小 大 小 大 小...
15             while i < n:
16                 if i == 0:
17                     if nums[i] >= nums[i+1]:
18                         sum1 += nums[i] - nums[i+1] + 1
19                 elif i == n - 1:
20                     if nums[i] >= nums[i-1]:
21                         sum1 += nums[i] - nums[i-1] + 1
22                 else:
23                     if nums[i] >= nums[i-1] or nums[i] >= nums[i+1]:
24                         sum1 += nums[i] - min(nums[i-1],nums[i+1]) + 1
25                 i += 2
26             
27             #目标 大 小 大 小 大...
28             j = 1
29             sum2 = 0
30             while j < n:
31                 if j == n-1:
32                     if nums[j] >= nums[j-1]:
33                         sum2 += nums[j] - nums[j-1] + 1
34                 else:
35                     if nums[j] >= nums[j-1] or nums[j] >= nums[j+1]:
36                         sum2 += nums[j] - min(nums[j-1],nums[j+1]) + 1
37                 j += 2
38             return min(sum1,sum2)

这是一道数组问题,没什么特殊的算法思想,只是基本的逻辑处理。

比赛的时候鼓捣了90分钟,最终也没有AC,本次比赛以0分完美收场。

开始感觉是一道Easy题目,应该比较快的能解决,但是写了2次都不对,就开始发蒙了。

脑子一片空白一直持续到12点比赛结束,然后突然感觉清醒了,几分钟就写出来了。

客观评价一下,这道题虽然定位为Easy,但是难度不低,能写出来也算不错了。

话音未落,题目难度已经调整为Medium了,我觉得是比较合理的。

猜你喜欢

转载自www.cnblogs.com/asenyang/p/11297829.html