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-2025 CODEPRJ.COM