链接
牛客:和为S的连续正数序列
LeetCode:剑指 Offer 57 - II. 和为s的连续正数序列
思路
这题的思路很巧妙,可以用双指针来解决。
代码
牛客:
import java.util.ArrayList;
public class Solution {
public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
ArrayList<ArrayList<Integer>> vec = new ArrayList<>();
for (int l = 1, r = 2; l < r; ) {
int sum1 = (l + r) * (r - l + 1) / 2;
if (sum1 == sum) {
ArrayList<Integer> res = new ArrayList<>();
for (int i = l; i <= r; ++i) {
res.add(i);
}
vec.add(res);
l++;
} else if (sum1 < sum) {
r++;
} else {
l++;
}
}
return vec;
}
}
LeetCode:
class Solution {
public int[][] findContinuousSequence(int target) {
List<int[]> vec = new ArrayList<>();
for (int l = 1, r = 2; l < r; ) {
int sum = (l + r) * (r - l + 1) / 2;
if (sum == target) {
int[] res = new int[r - l + 1];
for (int i = l; i <= r; ++i) {
res[i - l] = i;
}
vec.add(res);
l++;
} else if (sum < target) {
r++;
} else {
l++;
}
}
return vec.toArray(new int[vec.size()][]);
}
}