1375. 二进制字符串前缀一致的次数

开始是用的暴力的方式处理的,可以通过但是时间较长
在这里插入图片描述
思考了一下,发现其实我只要判断当前左边是满的即可,所以修改了思路
代码改为

    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

也都动过了,但是时长还是没有最短的那个短
1375. 二进制字符串前缀一致的次数_第1张图片
我认真看了时间最短的那个解法,其实关键的点在于少做计算
1375. 二进制字符串前缀一致的次数_第2张图片
同样的位置我使用的是加减法来处理,所以导致时间较长了。
但是这个范围我是可以介绍的
总结来说就是,能只用判断解决的逻辑问题还是少用计算处理

你可能感兴趣的:(LeetCode新的总结,leetcode,python,算法,数据结构)