輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
示例 1:
輸入:target =
9輸出:[[2
,3,4
],[4
,5]]
示例 2:
輸入:target =
15輸出:[[1
,2,3
,4,5
],[4
,5,6
],[7
,8]]
限制:
主要思路:暴力解決法。雙重迴圈遍歷陣列,找到對應的連續的和為target的序列。
注意:不需要遍歷整個陣列,只需要遍歷target/2即可,因為該值往後的值的和必然大於target。
時間複雜度:o(n^2)
空間複雜度:o(1)
public
int[
]findcontinuoussequence
(int target)
res.
add(arr)
;break;}
if(sum > target)}}
return res.
toarray
(new
int[res.
size()
]);}
主要思路:時間滑動視窗。關鍵在於確定左邊界和右邊界的邏輯:
這裡左右邊界始終往右移動,因此時間複雜度低。
時間複雜度:o(n)
空間複雜度:o(1)
public
int[
]findcontinuoussequence
(int target)
else
if(sum < target)
else
res.
add(arr)
; sum-=left;
left++;}
}return res.
toarray
(new
int[res.
size()
]);}
和為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。現在把問題交給你,你能不能也很快的找出所有和...