JAVA基礎 練習-模擬鬥地主
阿新 • • 發佈:2020-12-25
技術標籤:《劍指offer》演算法資料結構javascriptleetcode指標
劍指 Offer 57 - II. 和為s的連續正數序列
題目描述:
輸入一個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
示例:
輸入:target = 9
輸出:[[2,3,4],[4,5]]
輸入:target = 15
輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
思路:
設定兩個指標,如果和大於sum,左指標向後移位,如果小於,右指標向後移位。如果兩個指標碰在一起,則跳出,
程式碼:
var findContinuousSequence = function(sum) {
if(sum<2) return[];
var result=[];
var a=1,b=2,s=3;
while(a<=Math.floor(sum/2)){
if(s<sum){
b++;
s+=b;
}else if(s>sum){
s-=a
a++;
} else{
var temp=[];
for(var i=a;i<=b;i++){
temp.push(i)
}
result.push(temp)
if(a+1<b){
s-=a;
a++
}else{
break;
}
}
}
return result;
};