劍指offer 57 和為s的連續正數序列

2021-10-23 15:28:59 字數 954 閱讀 5562

題目描述:

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

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

輸入:target = 9輸出:[[2,3,4],[4,5]]
輸入:target = 15輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
滑動視窗法

頭尾指標,最開始頭指標指向陣列0下標處,尾指標比頭指標多1,而後開始移動,利用等差數列的求和公式來對頭尾指標的區間內的元素求和

// ans.push(arr) 陣列是引用型別,如果用這種方式,當arr變了後,ans內部的arr也會變,需要把arr內的值傳進去

arr.length = 0

l++r++

}else if (sum < target) else

}return ans

};這裡有一點特別需要注意的一開始我是用第15行的寫法來push陣列,但是陣列是引用型別,直接把a陣列push進另乙個陣列b,如果a陣列後續有改動,那麼b陣列裡的a陣列也是會改變的,所以不能這樣!!其實我們要實現的只是把a陣列裡的數字用陣列的形式傳進b裡,所以用乙個…的語法糖就可以了。

引用型別、字面量這種問題要格外注意

《劍指offer》 57 和為S的數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。先遍歷每個元素,在做差,看看差值在不在裡面,因為陣列是排序過的,所以乘積較小的肯定就是離得最遠的,python 的話還是很方便的 coding utf 8 class so...

劍指offer 57 和為S的數字

和為 s 的連續正整數序列 輸入乙個陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s 如果有多對數字的和等於 s 則輸出任意一對即可 例如 輸入陣列 和數字 15。由於 4 11 15 因此 輸出 4 和 11 排序 利用兩個指標 left right class solution 輸入乙...

劍指offer 57 和為S的兩個數

題目一 這道題題目為 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。解題思路分為三個步驟 1 對於已經排好序的陣列,先在陣列裡隨機選擇兩個數字,如果它們的和正好等於s,則輸出這兩個數字。2 如果隨機選擇的兩個數字和小於s,可...