牛客解題思路 和為 S 的連續正數序列

2021-10-23 23:25:18 字數 942 閱讀 5479

思路:輸出所有和為 s 的連續正數序列。

例如和為 100 的連續序列有:[9,

10,11,

12,13,

14,15,

16][18

,19,20

,21,22

]。

題目很簡單,但是答案都是千篇一律,為啥大家都喜歡在迴圈中再套乙個迴圈啊,我覺得這樣很浪費時間呀,因為這一題主要的思路就是雙指標(開始我以為在考察字首和。。。後來發現好像不是,因為陣列就是順序的自然數),先給大家看看大部分人的寫法:

public arraylist

>

findcontinuoussequence

(int sum)

else

if(cursum < sum)

else

}return ret;

}

核心思想就是雙指標但是這個雙指標可不是從兩端開始的噢,而是都是從0開始的,然後移動尾指標慢慢靠近sum值後開始微調,當cursum == sum時開始遍自然數然後累加,我在想,這完全沒必要呀,因為在判斷cursum大小時雙指標其實都已經遍歷過這幾個數了,所以完全沒必要最後再遍歷一遍呀,應該在遍歷的同時直接將數字新增到list中,不符合的時候再移除不就行了嗎?

public arraylist

>

findcontinuoussequence

(int sum)

else

if(s > sum)

else

}return result;

}

其中,當s == sum後,可以選擇移動頭指標也可以移動尾指標,因為無論時移動哪個,下一次迴圈都會進行相應的處理(●ˇ∀ˇ●)

牛客網 和為S的連續正數序列

小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...

牛客網 和為S的連續正數序列

小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...

牛客網 劍指offer 和為S的連續正數序列

題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的...