剣はOffer-61とsの連続的な正のシーケンスを指します

public int [] [] findContinuousSequence(int target){ 
    //スライディングウィンドウ
    int i = 1; 
    int j = 2; 
    int sum = 3; 
    List <int []> res = new ArrayList <>(); 
    // i、 jが出会うと、それは出口です
    while(i <j){ 
        // jより小さい場合は、戻ってjを
        if(sum <target){ 
            j ++; 
            sum + = j; 
        } else { 
            //に追加します。等しい場合は、ijから配列に保存します
            if(sum == target){ 
                int [] ans = new int [j-i + 1]; 
                for(int k = i; k <= j; k ++){ 
                    ans [ki ] = k; 
                } 
                res .add(ans); 
            }
            // i以上の場合、最初にiからiを減算し、に戻ります
            合計-= i; 
            i ++; 
        } 
    } 
    return res.toArray(new int [0] []); 
}

おすすめ

転載: blog.csdn.net/a792396951/article/details/114366592