Skip to content
js
/*
 * @lc app=leetcode.cn id=1588 lang=javascript
 *
 * [1588] 所有奇数长度子数组的和
 */

// @lc code=start
/**
 * @param {number[]} arr
 * @return {number}
 */
// var sumOddLengthSubarrays = function (arr) {
//   let ans1 = [];
//   for (let i = 1; i <= arr.length; i = i + 2) {
//     ans1.push(i);
//   }

//   let ans2 = [];
//   for (let j = 0; j < ans1.length; j++) {
//     let a1 = ans1[j];
//     for (let i = 0; i < arr.length; i++) {
//       if (i + a1 <= arr.length) {
//         ans2.push(arr.slice(i, i + a1));
//       }
//     }
//   }
//   let res = 0;
//   for (let i = 0; i < ans2.length; i++) {
//     let ans3 = ans2[i];
//     for (let j = 0; j < ans3.length; j++) {
//       let a1 = ans3[j];
//       res = res + a1;
//     }
//   }
//   return res;
// };

// 滑动窗口
function windows(arr, len) {
  let i = 0;
  let j = 0;
  let sum1 = 0;
  let sum2 = 0;
  while (j < arr.length) {
    sum1 += arr[j];
    if (j - i + 1 === len) {
      sum2 += sum1;
      sum1 -= arr[i];
      i++;
    }
    j++;
  }
  return sum2;
}

var sumOddLengthSubarrays = function (arr) {
  let res = 0;
  for (let i = 1; i <= arr.length; i += 2) {
    res += windows(arr, i);
  }
  return res;
};
// @lc code=end

上次更新于: