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

2021-07-10 15:00:04 字數 999 閱讀 1699

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

輸出描述:

輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序
演算法:我們已經在排序陣列中,求和為s的兩個數。參考
那麼,借鑑之前的求解思路。可以用兩個指標first和last分別指向一段連續正整數序列的第乙個和最後乙個元素。並求出這段連續正整數的和,將這個和與s比較。
1、如果他們的和與s相等,那麼就找到一段符合條件的正整數。
2、如果他們的和小於s,那麼就讓last指標後移,並重新計算新得到的連續正整數的和,將這個和與s做比較。
3、如果他們的和大於s,那麼就讓first指標後移,重新計算新得到的連續正整數的和,這個和一定比之前的和小,然後再拿這個和與s做比較。
c++**
//本題是要求求連續的正整數,使得他們的和等於sum
vector> findcontinuoussequence(int sum) 

vectorivec;

int mid = (sum + 1) / 2;

int left = 1;

int right = 1;

int tempsum = 0;

tempsum += right;

while (left <= mid)

ivecvec.push_back(ivec);

right++;

tempsum += right;

}else if (tempsum < sum)

else

}return ivecvec;

劍指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...

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

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