和为s的连续正数序列

标签:暴力、双指针

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

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

public class findContinuousSequence {
    static List<int[]> res = new ArrayList<>();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int target = in.nextInt();

            func2(target);
            StringBuilder sb = new StringBuilder("[");
            for (int[] curr : res) {
                sb.append("[").append(curr[0]);
                for (int i = 1; i < curr.length; ++i) {
                    sb.append(",").append(curr[i]);
                }
                sb.append("],");
            }
            sb.deleteCharAt(sb.length() - 1);
            sb.append("]");
            System.out.println(sb.toString());
        }

        in.close();
    }

    public static void func(int target){
        int i = 1;
        int j = 1;
        int tmp = 0;
        while(i <= (target / 2)){
            if(tmp < target){
                tmp += j;
                j++;
            }else if(tmp > target){
                tmp -= i;
                i++;
            }else{
                int[] cur = new int[j - i];
                for(int k = i; k < j; k++){
                    cur[k - i] = k;
                }
                res.add(cur);
                tmp -= i;
                i++;
            }
        }
        // return res.toArray(new int[res.size()][]);

    }

    public static void func2(int target){
        for(int i = 1; i <= target; i++){
            for(int j = i + 1; j < target; j++){
                int pre = 0;
                for(int k = i; k <= j; k++){
                    pre += k;
                }
                if(target == pre){
                    int[] t = new int[j - i + 1];
                    for (int k = i; k <= j; k++) {
                        t[k - i] = k;
                    }
                    res.add(t);
                }
                else if(pre > target){
                    break;
                }
            }
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容