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] []); }
剣はOffer-61とsの連続的な正のシーケンスを指します
おすすめ
転載: blog.csdn.net/a792396951/article/details/114366592
おすすめ
ランキング