JZ41 和为S的连续正数序列
本文最后更新于:2022年4月9日 中午
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public: vector<vector<int> > FindContinuousSequence(int sum) { vector<vector<int>> res; int curSum = 0; for (int i = 1; i <= sum / 2; ++i) { for (int j = i; j < sum; ++j) { curSum += j; if (sum == curSum) { vector<int> tmp; for (int k = i; k <= j; ++k) tmp.push_back(k); res.push_back(tmp); } else if (curSum > sum) { curSum = 0; break; } } } return res; } };
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution { public: vector<vector<int> > FindContinuousSequence(int sum) { int l = 1; int r = 1; int winSum = 0; vector<vector<int>> res; while (l <= sum / 2) { if ( winSum < sum) { winSum += r; r++; } else if (winSum > sum) { winSum -= l; l++; } else { vector<int> cur; for (int i = l; i < r; ++i) { cur.push_back(i); } res.push_back(cur); winSum -= l; l++; } } return res; } };
|