思路:輸出所有和為 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。現在把問題交給你,你能不能也很快的...