开始是用的暴力的方式处理的,可以通过但是时间较长
思考了一下,发现其实我只要判断当前左边是满的即可,所以修改了思路
代码改为
def numTimesAllBlue3(self, flips: List[int]) -> int:
num1 = 0
ret = 0
for index, item in enumerate(flips):
num1 += index + 1 - item
if num1 == 0:
ret += 1
return ret
def numTimesAllBlue2(self, flips: List[int]) -> int:
num2 = 0
num1 = 0
ret = 0
for index, item in enumerate(flips):
num1 += index + 1
num2 += item
if num1 == num2:
ret += 1
return ret
也都动过了,但是时长还是没有最短的那个短
我认真看了时间最短的那个解法,其实关键的点在于少做计算
同样的位置我使用的是加减法来处理,所以导致时间较长了。
但是这个范围我是可以介绍的
总结来说就是,能只用判断解决的逻辑问题还是少用计算处理