探索陣列和字串 長度最小的子陣列(滑動視窗)

2021-10-04 15:19:14 字數 857 閱讀 6575

給定乙個含有 n 個正整數的陣列和乙個正整數 s ,找出該陣列中滿足其和 ≥ s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。

示例:輸入: s = 7, nums = [2,3,1,2,4,3]

輸出: 2

解釋: 子陣列 [4,3] 是該條件下的長度最小的連續子陣列。

高階:如果你已經完成了o(n) 時間複雜度的解法, 請嘗試 o(n log n) 時間複雜度的解法。

思路:

1.對每一組滿足子串進行比較,並找出最短的

class

solution

int sum=0;

int min=int_max;

for(

int i=

0;isize()

-1;i++)if

(sum>=s)

sum=0;

}if(min==int_max)

return min;}}

;

2.由於第一種辦法耗時太長,改為滑動視窗解法

class

solution

int sum=0;

int min=int_max;

int i=0;

//視窗右端

int j=0;

//視窗左端

while

(isize()

)else

j++;//左端前進}}

if(min==int_max)

return min;}}

;

字串問題 最小包含子串的長度

題目 給定字串str1和str2,求str1的子串中含有str2所有字元的最小子串長度。舉例 str1 aabcde str2 ca 返回3.str1 12345 str2 344 返回0.基本思路 使用乙個雜湊表記錄str2中每乙個字元出現的次數。需要四個變數 left,right表示str1子串...

長度最小的子陣列

方法 1 暴力 想法按照題目要求直接求。把所有可能的子陣列求和並更新 textans 直到我們找到最優子陣列且和滿足 text geq textsum s 演算法初始化 text textans int max 用變數 ii 從左到右遍歷陣列 用變數 jj 從當前元素到陣列尾部遍歷 將 ii 到 j...

長度最小的子陣列

給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜度的解法,...