インタビューの質問57 - 。IIと連続した正のシーケンスの個数
正の整数ターゲット、すべての連続する正の整数の出力、および(少なくとも2つの数値を含む)標的配列を入力してください。
昇順で番号が最初の数字に応じて異なる配列の昇順に配列されています。
例1:
入力:目標= 9
出力:[[2,3,4]、[4,5]
実施例2:
入力:目標= 15
出力:[1,2,3,4,5]、[4,5,6]、[7,8]
制限事項:
1 <=目標<= 10 ^ 5
私の考え
この質問はまた、等差数列の和を使用することができますが、それは数学的な問題であり、そしてスキルをプログラミングすることは問題で、ここでは2ポインタは、理解しやすいものではありません。
I jに加え、右ポインタスライド上小さく、かつ大きな左ポインタ、出力のセットだけのスライドは、左ポインタをスライドさせました。
私の答え
func findContinuousSequence(t int) (ans [][]int) {
i,j:=1,2
for ;i<=t/2;i++{
for ;;j++{
if (i+j)*(j-i+1)>2*t{
break
}else if (i+j)*(j-i+1)==2*t{
ans=append(ans,createSlice(i,j))
break
}
}
}
return
}
func createSlice(i,j int) (ans []int) {
for n:=i;n<=j;n++{
ans=append(ans,n )
}
return
}