209. Minimum Size Subarray Sum


💡 に答える

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ポインタは、sumtarget以上である場合、sumstartインデックスに相当する要素を繰り返し減算する.sumから1回減少するごとに、start indexを1つ前に移動します.numsのすべての要素の合計がtargetlength未満である場合、Number.MAX_SAFE_INTEGERは、最後に3つの演算子を使用してreturnになります.
修正、指摘を歓迎します!

質問リンク


https://leetcode.com/problems/minimum-size-subarray-sum/

LeetCode GitHub


https://github.com/tTab1204/LeetCode