90 和为s的连续正数序列

问题描述:输入一个正整数target,输出所有和为target的连续正整数序列(至少包含两个数),序列内的数字大小由小到大排列,不同序列按照首个字母从小到大排列。

for循环求解:对于for循环而言复杂度为n2较高。

java 复制代码
public List<List<Integer>>sumS(int target)
{
List<List<Integer>> res=new List<>();
for(int i=1;i<target/2;i++)
{
int sum=i;
List<Integer>list=new LinkedList<>();
list.add(i);
for(int j=i+1;j<target/2;j++)
{
if(sum+j>target)
break;
}else if(sum+j==target)
{
list.add(j);
res.add(list);
}else
{
sum+=j;
list.add(j)
}
}
​​​​​​​return res;
}

滑动窗口解决:定义一个sum(int类型)表示从左left到右right这个区间中的和,若sum小于target,则right右移,sum+nums[target],若大于taget,则left左移,若等于,则更新价收入数组中。

java 复制代码
public List<List<Integer>>sumS(int target)
{
int left=1;
int right=2;
int sum=left+right;
List<int[]>res=new LinkedList<>();
while(left<target/2)
{
if(sum<target)
{
right++;
sum+=right;
}else if(sum>target)
{
sum-=left;
left++;
}else
{
int []array=new int[right-left+1];
for(int i=0;i<array.length;i++)
{
array[i]=left+i;
}
res.add(array);
}
}
return res.toArray(new int[res.size()][]);
}
相关推荐
啊哦呃咦唔鱼5 分钟前
LeetCode hot100-438 找到字符串中所以字母异位词
算法·leetcode·职场和发展
重生之后端学习10 分钟前
136. 只出现一次的数字
开发语言·算法·leetcode·职场和发展·深度优先
见叶之秋14 分钟前
详解单链表(含链表的实现过程)
数据结构·链表
啊唯不困17 分钟前
AI智能应用开发(Java)起点-终点 -1、java的前世今生andJava环境配置、jdk下载,以及Idea下载和基本应用
java·开发语言·intellij-idea
_muffinman19 分钟前
Java学习笔记-第2章 运算和语句
java·笔记·学习
荒夜长歌21 分钟前
传统java行业跳槽面试汇总(后续会更新)
java·面试·跳槽
旷世奇才李先生21 分钟前
065智慧农业专家远程指导系统-springboot+vue
java·vue.js·spring boot
大迪deblog22 分钟前
系统架构设计-软件架构风格
java·开发语言·架构·软件构建
盐水冰22 分钟前
【烘焙坊项目】后端搭建(10) - 地址簿功能&用户下单&微信支付
java·数据库·后端
重庆小透明25 分钟前
【面试问题】java小厂
java·开发语言·面试