leetcode 9 長度最小的子陣列

2021-10-02 10:37:37 字數 995 閱讀 2873

題目:

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

示例:

輸入:s = 7, nums = [2,3,1,2,4,3]輸出:2解釋:子陣列[4,3]是該條件下的長度最小的連續子陣列。
解答:

思路:用i從左到右遍歷陣列,用j從當前元素到陣列尾部遍歷,將i到j之間的數求和得到sum;如果sum比s大,則將個數儲存下來;

最後比較所有可能的結果,取最小那乙個;

class solution }}

if(!res.empty())

else

return 0;

}};

以上演算法上就不是很好,而且在**實現上又有點麻煩,又要使用vector,又要有乙個count計數,最後還要對vector排序;

演算法不變,對**進行優化;

1.沒有必要使用vector;因為非最小長度的組合及其個數是沒用的,沒有必要儲存;

2.沒有必要使用count計數;因為可以直接用j-i+1得到長度;

class solution }}

return res==int_max ? 0 : res;

}};

思路:使用2個指標,乙個指向開始的位置,乙個指向使得sum大於等於s同時長度最小的最後位置,不斷移動左端點。遍歷陣列就可找到滿足條件的長度。

class solution 

}return res==int_max ? 0 : res;

}};

leetcode 長度最小的子陣列

給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。雙指標法解決,先從零開始累加sum,先保證sum...

Leetcode 長度最小的子陣列

給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 1 輸入 s 7,nums 2 3,1 2,4 3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。可以使用滑動視窗的方法,i在左邊界,...

LeetCode 長度最小的子陣列

題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列,並返回其長度。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。題解 clas...