輸出所有和為s的連續正數序列。
序列內按照從小至大的順序,序列間按照開始數字從小到大的順序
思路:
設定乙個滑動視窗,左邊left 右邊right
初始化 left=1 right=2
那麼這個視窗內的值和sum為(right+left)*(right-left+1)/2
比較sum與s的大小關係
如果sum=s 那麼符合條件的答案之一 l
——left++ right++ 因為下一組可能的答案不可能left不變 不可能right不變
如果sum>s
——那麼和過大 left++
如果sum——那麼和過小 right++
(因為left right都是從小到大遞增 所以考慮了所有情況)
迴圈一定會跳出 在試圖尋找sum=s途中 left=right
vector> findcontinuoussequence(int sum)
res.push_back(one_res);
left++;
right++;
}else if(curelse //那麼左邊指標向後移 為什麼不是後面指標向前移 (因為這種情況 之前已經討論過)
//迴圈一定會跳出 即 left=right時候
}return res;
}
和為S的連續正數序列 滑動視窗
輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序。一開始只想到了最粗暴的窮舉解法 因為s 2後,數字相加一定大於s,所以迴圈只到s 2為止 public arraylist findcontinuoussequence int sum else if curs...
( )41 和為S的連續正數序列 滑動視窗
小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...
滑動視窗之和為S的連續正數序列
題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的...