学院力扣打卡第四天

  • Post author:
  • Post category:其他


今天是一道难题!!!

题目:

看见提示里的10的五次方,就知道不可能用暴力解法了,绝对超时!!!!

代码:

class Solution:
    def shortestSubarray(self, nums: List[int], k: int) -> int:
        preSumArr = [0]
        res = len(nums) + 1
        for num in nums:
            preSumArr.append(preSumArr[-1] + num)
        q = deque()
        for i, curSum in enumerate(preSumArr):
            while q and curSum - preSumArr[q[0]] >= k:
                res = min(res, i - q.popleft())
            while q and preSumArr[q[-1]] >= curSum:
                q.pop()
            q.append(i)
        return res if res < len(nums) + 1 else -1

执行结果:

今天的打卡完成啦!



版权声明:本文为m0_58803171原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。