剑指 Offer 57 - II. 和为s的连续正数序列

78 阅读1分钟

剑指 Offer 57 - II. 和为s的连续正数序列

值为9 可以 为4 + 5 ,说明遍历最多可以到值为4

如果是偶数 并没有两个值的数 满足条件 所以在最后做个判断,只有是奇数才能res.push([mid, mid + 1]);

1 + 2 + 3 ... 如果满足值为target 则将生成的数组 放入res中

2+3+....如果满足值为target 则也可以将数组放入res中

直到 mid + (mid+1) ....

var findContinuousSequence = function (target) {
  var mid = target >> 1;
  var res = [];
  for (var i = 1; i < mid; i++) {
    var j = i;
    var sum = i;
    var arr = [];
    while (sum < target) {
      arr.push(j);
      j++;
      sum += j;
      if (sum == target) {
        arr.push(j);
        res.push(arr);
        continue;
      }
    }
  }
  if (target % 2 !== 0) {
    res.push([mid, mid + 1]);
  }
  return res;
};