【剑指offer】面试题57 - II:和为s的连续正数序列(Java)
輸入一個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
?
示例 1:
輸入:target = 9
輸出:[[2,3,4],[4,5]]
示例 2:
輸入:target = 15
輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
?
限制:
1 <= target <= 10^5
代碼:
class?Solution?{
????public?int[][]?findContinuousSequence(int?target)?{
????????List<int[]>?list?=?new?ArrayList<>();
????????int?left?=?1,right?=?2;
????????int?sum?=?3;
????????while(right<target)
????????{
????????????if(sum<target)
????????????{
????????????????right++;
????????????????sum+=right;
????????????}
????????????else?if(sum>target)
????????????{
????????????????sum-=left;
????????????????left++;
????????????}
????????????else{
????????????????int?nums[]?=?new?int[right-left+1];
????????????????for(int?i=0;i<=right-left;i++)
????????????????{
????????????????????nums[i]?=?left+i;
????????????????}
????????????????list.add(nums);
????????????????right++;
????????????????sum+=right;
????????}
????????}
????????return??list.toArray(new?int[0][]);
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题57 - II:和为s的连续正数序列(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python程序生成.exe的可执行文件
- 下一篇: Oracle 数据库