Leetcode练习(Python):数组类:第209题:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。


题目:
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。

进阶:

如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法

思路:

双指针+滑动窗口

在一个小科技公司的面试时遇到过,当时手写代码写的很长很乱,看了网上的解答后记忆深刻。

程序:

class Solution:
    def minSubArrayLen(self, s: int, nums: List[int]) -> int:
        length = len(nums)
        if length <= 0:
            return 0
        if length == 1:
            if nums[0] >= s:
                return 1
            else:
                return 0
        head = 0
        auxiliary = 0
        result = float('inf')
        for tail in range(length):
            auxiliary += nums[tail]
            while auxiliary >= s:
                result = min(result, tail - head + 1)
                auxiliary -= nums[head]
                head += 1
        return result if result != float('inf') else 0


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 Leetcode练习(Python):数组类:第152题:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。 Leetcode练习(Python):哈希表类:第3题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 Leetcode练习(Python):数学类:第168题:Excel表列名称:给定一个正整数,返回它在 Excel 表中相对应的列名称。 序列和-出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N。答案可能有多个,我我们需要找出长度最小的那个。 Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 Leetcode练习(Python):数组类:第85题:给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 找出不在给定数组中的最小正整数 LeetCode第三题:给定一个字符串,找出不含有重复字符的最长子串的长度。 Leetcode练习(Python):数组类:第42题:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 Leetcode练习(Python):数组类:第54题:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
 
粤ICP备18138465号  © 2018-2026 CODEPRJ.COM