209. Minimum Size Subarray Sum
4427 ワード
💡 に答える
var minSubArrayLen = function (target, nums) {
let start = 0;
let sum = 0;
let length = Number.MAX_SAFE_INTEGER;
for (let end = 0; end < nums.length; end++) {
sum += nums[end];
// console.log('pastSum: ', sum);
while (sum >= target) {
length = Math.min(length, end - start + 1);
sum -= nums[start];
// console.log('curSum: ', sum);
start++;
}
}
return length === Number.MAX_SAFE_INTEGER ? 0 : length;
};
📝 整理する
以前に解いた問題(リンク)と同様に,スライドウィンドウアルゴリズム(コメントリンク)の配列問題を用いた.
target
==Subarayの総和であるべきで、条件を満たすSubarayの中で最も短い長さのSubarayの長さはreturn
であればよい.start
ポインタとend
ポインタを指定し、end
ポインタを最初にループさせるときに1つ追加します.start
ポインタは、sum
がtarget
以上である場合、sum
をstart
インデックスに相当する要素を繰り返し減算する.sum
から1回減少するごとに、start
indexを1つ前に移動します.nums
のすべての要素の合計がtarget
length
未満である場合、Number.MAX_SAFE_INTEGER
は、最後に3つの演算子を使用してreturn
になります.修正、指摘を歓迎します!
質問リンク
https://leetcode.com/problems/minimum-size-subarray-sum/
LeetCode GitHub
https://github.com/tTab1204/LeetCode
Reference
この問題について(209. Minimum Size Subarray Sum), 我々は、より多くの情報をここで見つけました https://velog.io/@ken1204/209.-Minimum-Size-Subarray-Sumテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol