我是靠谱客的博主 柔弱洋葱,这篇文章主要介绍所有和为 target 的连续正整数序列,现在分享给大家,希望可以做个参考。

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。

序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。

示例 1:

输入:target = 9
输出:[[2,3,4],[4,5]]
示例 2:

输入:target = 15
输出:[[1,2,3,4,5],[4,5,6],[7,8]]

因为是连续的正整数,因此从头开始遍历,直到目标数的一半(后面的数任意相加大于目标数)。
small初始化为1,big初始化为2,small和big之间的序列{1,2},和为3.接下来让序列包含更多的数字,知道big=4,序列为{1,2,3,4},序列和为10>9,于是把small变成2,找到第一个序列{2,3,4}。重复。

public int[][] findContinuousSequence(int target) {    
ArrayList<int[]> res= new ArrayList<>();
for(int i=1;i<=target/2;i++){
	int sum=0;
	int j=i;
	while(sum<target){
		sum+=j;
		j++;
	}
	if(sum==target){
		int[] sol= new int[j-i];
		for(int k=0;k<j-i;k++){
			sol[k]=k+i;
		}
		res.add(sol);
	}
}
return res.toArray(new int[res.size()][]);
    }

最后

以上就是柔弱洋葱最近收集整理的关于所有和为 target 的连续正整数序列的全部内容,更多相关所有和为内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(93)

评论列表共有 0 条评论

立即
投稿
返回
顶部