输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
输入:target = 9
输出:[[2,3,4],[4,5]]
枚举+暴力
public class FindContinuousSequence { public int[][] findContinuousSequence(int target) { /** * @Method: findContinuousSequence * @Author: haifwu * @Version: 1.0 * @Date: 21/05/2021 10:25 * @param target * @Return: java.util.List<java.util.List<java.lang.Integer>> * @Description: 枚举 + 暴力 * */ List<int[]> list = new ArrayList<>(); int n = target / 2 + 1; // 下取整 for(int i = 1; i < n; i ++) { int sum = i, t = i + 1; while(sum < target && t <= n) { sum += t; if (sum == target) { int[] temp = new int[t - i + 1]; for(int k = i; k <= t; ++k) { temp[k - i] = k; } list.add(temp); break; } t++; } } return list.toArray(new int[list.size()][]); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int target = scanner.nextInt(); int[][] list = new FindContinuousSequence().findContinuousSequence(target); int n = list.length; for (int i = 0; i < n; i++) { int m = list[i].length; for (int j = 0; j < m; j++) { System.out.print(list[i][j] + " "); } System.out.println(); } } }
原文:https://www.cnblogs.com/haifwu/p/14792829.html