1. 程式人生 > 其它 >JAVA基礎 練習-模擬鬥地主

JAVA基礎 練習-模擬鬥地主

技術標籤:《劍指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,左指標向後移位,如果小於,右指標向後移位。如果兩個指標碰在一起,則跳出,

//左指標一直小於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; };