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()][]);
}
相关推荐
Knight_AL3 分钟前
Java 线程池预热(Warm-up)实战:开启与不开启到底差多少?
java·开发语言
爬山算法5 分钟前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端
brave and determined11 分钟前
CANN训练营 学习(day9)昇腾AscendC算子开发实战:从零到性能冠军
人工智能·算法·机器学习·ai·开发环境·算子开发·昇腾ai
C++业余爱好者16 分钟前
公司局域网访问外网的原理
java
@淡 定39 分钟前
异常处理最佳实践
java
Dave.B40 分钟前
用【vtk3DLinearGridCrinkleExtractor】快速提取3D网格相交面
算法·3d·vtk
一起养小猫41 分钟前
LeetCode100天Day1-字符串匹配与Z字形变换
java·leetcode
白宇横流学长43 分钟前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端
yaoh.wang1 小时前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法
又是忙碌的一天1 小时前
二叉树的构建与增删改查(2) 删除节点
数据结构