地址:

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

状态:AC

代码:滑动窗口

  1. vector<vector<int>> findContinuousSequence(int target) {
  2. int i = 1; // 滑动窗口的左边界
  3. int j = 1; // 滑动窗口的右边界
  4. int sum = 0; // 滑动窗口中数字的和
  5. vector<vector<int>> res;
  6. while (i <= target / 2) {
  7. if (sum < target) {
  8. // 右边界向右移动
  9. sum += j;
  10. j++;
  11. } else if (sum > target) {
  12. // 左边界向右移动
  13. sum -= i;
  14. i++;
  15. } else {
  16. // 记录结果
  17. vector<int> arr;
  18. for (int k = i; k < j; k++) {
  19. arr.push_back(k);
  20. }
  21. res.push_back(arr);
  22. // 左边界向右移动
  23. sum -= i;
  24. i++;
  25. }
  26. }
  27. return res;
  28. }