《劍指Offer》35 和為S的連續正數序列

2021-09-11 03:41:58 字數 886 閱讀 7342

題目:35. 和為s的連續正數序列

知識點:雙指標

題目描述:

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

解題思路:

這道題和上道題的解題思路差不多,都是使用雙指標的思想來進行解題,乙個指標位於尾端,另乙個位於首端,如果當前的和已經大於目標值則直接將尾端指標前移並將當前和減去移動之前的值,如果當前的和小於目標值,則將首指標前移後當前和加上移動之後的值,如果當前和等於目標值,則直接遍歷從尾指標到首指標的數字並儲存到結果陣列中即可,需要注意的是總的判斷只需進行到最小值小於目標值加一的一半即可,因為一旦最小值都已經超過目標值加一的一般,那當前總和一定已經大於目標值。

**:

//解法一(自研):

vector> findcontinuoussequence(int sum) else if(cursum < sum)else

}return res;

}//解法二(劍指offer 解題思路同上):

void findcontinuoussequence(int sum)

big ++;

cursum += big;

}}void printcontinuoussequence(int small, int big)

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

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

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

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

劍指offer 和為 s 的連續正數序列

輸入乙個正數 s,列印出所有和為 s 的連續正數序列 至少兩個數 例如輸入 15,由於 1 2 3 4 5 4 5 6 7 8 15,所以結果打出 3 個連續序列 1 5 4 6 和 7 8。考慮用兩個數 small 和 big 分別表示序列的最小值和最大值。首先把 small 初始化為 1,big...