和為 s 的連續正數序列

2022-05-16 06:26:55 字數 1001 閱讀 5841

輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。

示例:

輸入:target = 9

輸出:[[2,3,4],[4,5]]

假若我們輸入的 target 為 9,大腦中應該有下面這麼個玩意:

然後我們通過左右指標來維護乙個滑動視窗,同時計算視窗內的值是否是目標值:

如果視窗的值過小,我們就移動右邊界。

如果視窗的值過大,我們就移動左邊界。

剩下的就是反覆上面的操作就可以了。到這裡分析過程看似結束了。但是我們可以觀察出一丟丟規律,用來優化我們的演算法。對於任意乙個正整數,總是小於它的中值與中值+1的和。為了讓大家直觀,用下圖舉例:

比如這裡的100,就一定小於50+51,換成其他數也一樣。換句話說,一旦視窗左邊界超過中值,視窗內的和一定會大於 target

func findcontinuoussequence(target int) int 

for i <= target/2 else if win > target else

}return result

}

和為S的連續正數序列

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

和為S的連續正數序列

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

和為S的連續正數序列

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