劍指offer 65和為S的連續正數序列

2022-06-03 09:18:09 字數 1049 閱讀 5420

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

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

題解:第一種方法,找規律

第num開始,到num+n構成的序列和 == sum

麼你會發現,則這些數全部減去(num-1)後構成序列 1,2,3,4,5,,,,n,而他們的和為n*(n+1)/2

以滿足條件的序列必滿足: n*(num-1) + n*(n+1)/2 == sum

第二種方法,滑動視窗

使用滑動視窗,和大了,則左指標右移,並吐出左數,和小了,則右指標右移,加上右數

1

//第一種方法,找規律2//

第num開始,到num+n構成的序列和 == sum3//

麼你會發現,則這些數全部減去(num-1)後構成序列 1,2,3,4,5,,,,n,而他們的和為n*(n+1)/24//

以滿足條件的序列必滿足: n*(num-1) + n*(n+1)/2 == sum

5class

solution01

21return

res;22}

23};

2425

//第二種方法,滑動視窗

26//

使用滑動視窗,和大了,則左指標右移,並吐出左數,和小了,則右指標右移,加上右數

27class

solution ;

31 vectorint> >res;

32int l = 1, r = 2, s = 1 + 2;33

while (l < r && r 40if (s >=sum)

44else48}

49return

res;50}

51 };

劍指offer 65 矩陣中的路徑

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。例如 思路 回溯法 matrix矩陣中所有點作為起點,然後依據這個點進行...

劍指offer 65 矩陣中的路徑

利用回溯法 回溯演算法概念 在許多遞迴問題當中,我們採取的方法都是窮盡所有的可能,從而找出合法的解。但是在某些情況下,當遞迴到某一層的時候,根據設定的判斷條件,可以 judge 此解是不合法的。在這種情況下,我們就沒必要再進行深層次的遞迴,從而可以提高演算法效率。這一類演算法我們稱為 回溯法 設定的...

劍指offer65 矩陣中的路徑

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。例如 矩陣中包含一條字串 bcced 的路徑,但是矩陣中不包含 abcb...