41 和為S的連續正數序列

2021-08-19 23:09:54 字數 851 閱讀 7752

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

輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序

思路一:使用dfs,遍歷找到所有滿足要求的連續序列,因為要求至少有2個數,所有遍歷的終止條件是初始位置i<=sum/2

**一:

class solution 

return res;

}void dfs(vector>& res, vector& tmp, int sum, int now, int num) else if(now > sum) else

}};

思路二:採用雙指標,初始時 left=1,right=2,定義當前累加和sum_tmp,若sum_tmpsum,則--left;並及時更新sum_tmp的值,若sum_tmp=sum,則記錄當前結果,並存入res中。

**二:

class solution 

res.push_back(tmp);

sum_tmp -= left;

++left;

} else if(sum_tmp < sum) else

}return res;

}};

小結:對於排好序的陣列,在解法上可以優先考慮雙指標解法

41 和為S的連續正數序列

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

41 和為s的連續正數序列

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

41 和為S的連續正數序列

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