Leetcode II 和為s的連續正數序列

2021-10-04 18:10:58 字數 1052 閱讀 1159

輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。

序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。

示例 1:

輸入:target = 9

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

示例 2:

輸入:target = 15

輸出:[[1,2,3,4,5],[4,5,6],[7,8]]

限制:1 <= target <= 10^5

分析後可以發現: 當連續數列的個數為num時, 數列的中點為target/num(該型別為浮點型)

連續數字的和等於target的情況有:

當連續數列為偶數個num時, 只有target/num的小數部分為0.5時, 含target/num的連續數列的和才能等於target;

當連續數列為奇數個num時, 只有target整除num時, 含target/num的連續數列的和才能等於target.

class solution 

result.push_back(temp);

temp.clear();

}else if(num%2== 1&& fabs(target*1.0/num- target/num)< exp)

result.push_back(temp);

temp.clear();

}++num;

}// 因為num從2開始,所以num越大則首個數字越小,所以倒轉vector

return vector>(result.rbegin(), result.rend());

}};

參考了leetcode題解的雙指標法

class solution 

else if ((j - i + 1) * (j + i) < 2 * target)

else

++i;

// 移動慢指標,使和減小

}return result;

}};

6 連續序列和為s

題目 輸入乙個整數s,列印出全部和為s的連續整數序列 至少含有2個數 比如輸入9,則輸出2 3 4和4 5兩個序列 方案一 因為序列至少要2個數,則兩個數上限值為 1 s 2,我們能夠列舉該序列的起點和終點求全部滿足的序列。時間複雜度為o n 2 效率比較低 方案二 我們設定兩個指標start和en...

和為S的連續

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

57 和為S的數字

1 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。2 小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至...