LeetCode

LeetCode 57 - II. 和为s的连续正数序列

2020-03-06  本文已影响0人  桐桑入梦

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

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

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

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

限制:

思路:双指针

class Solution {
    public int[][] findContinuousSequence(int target) {
        int L = 1, R = 1, sum = 0, k = 0;
        List< int[] > a = new ArrayList<>();
        while( true ){
            sum = ( L + R ) * ( R - L + 1 ) / 2;
            if( sum == target ){
                int[] item = new int[ R - L + 1 ];
                for( int i = L; i <= R; i++ )
                    item[ i - L ] = i;
                a.add( item );
                L++;
                R++;
            }
            else if( sum > target ){
                L++;
            }
            else if( sum < target ){
                R++;
                if( R > ( target + 1 ) / 2 )
                    break;
            }
        }
        return a.toArray( new int[ a.size() ][] );
    }
}
上一篇下一篇

猜你喜欢

热点阅读