剑指offer57-和为s的连续正数序列(Java)
题目内容
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
思路与收获
题目并不复杂,但是双指针的思路确实很巧妙,写出来的代码也比较简洁。此外还学习了Java二维数组的使用。
代码
public int[][] findContinuousSequence(int target) {
ArrayList<int[]> results =new ArrayList<int[]>();
int left = 1, right = 1, sum = 0;
while(left <= target/2)
{
System.out.println("left:"+left+" right:"+right+ " sum:"+sum);
if(sum == target)
{
int[] line = new int[right - left];
for (int i = left; i < right; i++) {
line[i - left] = i;
}
System.out.println("Find Success ->"+left+" "+right);
results.add(line);
sum = sum - left;
left = left + 1;
}
else if(sum < target){
sum = sum + right;
right = right + 1;
}
else{
sum = sum -left;
left = left + 1;
}
}
return results.toArray(new int[results.size()][]);
}
随笔
近期计划,在力扣上把剑指offer刷完。把《Head First Java》看完,这几天尽量定一个详细的时间计划吧。所有力扣上需要看题解的题都在博客上记录下来,