輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。分析後可以發現: 當連續數列的個數為num時, 數列的中點為target/num(該型別為浮點型)序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
示例 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
連續數字的和等於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 至...