python刷題寶 高效刷題貼

2021-10-18 15:00:21 字數 1110 閱讀 7391

持續更 (此貼只記錄需要掌握的知識點,不貼**)

jz1 旋轉陣列中的最小元素

根據旋轉陣列的性質,問題可以轉化為對兩個順序陣列分界點的尋找

①暴力法:

1.從下標為0的元素開始遍歷

2.每次進行比較,如果當前元素比相鄰的下乙個元素小,則對應的下乙個元素為最小值(一般情況)

3.如果查詢到最後乙個元素都沒有出現2這種情況,則下標為0是最小元素(特殊情況:所有元素都一樣)

②二分法

二分法適用的關鍵:

一般二分查詢的要求(順序儲存、元素有序)

原因(通過下標即可以得到關鍵字,任取乙個關鍵字的值可以確定所選擇關鍵字是在他的前面還是後面)

整體思路:

因為題目描述「把乙個陣列最開始的若干個元素搬到陣列的末尾」. 所以我們裡層的判斷條件是判斷nums[mid]和nums[end]的關係:

如果nums[mid] > nums[end], 說明最小值還在nums[mid]的右邊;

如果nums[mid] < nums[end], 說明最小值在mid或mid的左邊;

如果nums[mid] == nums[end], 有重複數字的旋轉陣列,會出現這種的情況;我們並不能確定分界線出現在mid的前面還是後面,所以直接暴力縮短右邊界。

細節,注意下標變化

一般二分查詢:left = mid+1/right = mid -1,原因:確定mid所指元素並非查詢元素,所以下標變化取決於索引所指元素是否可能是查詢元素。

jz2 從尾到頭列印鍊錶

這道題整體不難,然後

有三種思路,第一就是利用棧先入後出的特性完成,第二就是存下來然後進行陣列翻轉。第三是利用遞迴。

最佳**:**思路借助棧,遍歷的時候入棧,由於資料結構中棧的特點是先進後出,所以遍歷的過程中壓棧,推棧,完了彈棧加到arraylist中。

有兩個容易出錯的地方:第一,第一次測試用例{}返回,null是null,而是new arraylist()但是沒有資料。第二,遍歷stack用的方法是

!stak.isempty()方法,而不是for迴圈size遍歷。

另外,python 字元翻轉的三種方法:l[::-1]、list(reversed(l))(reversed(l)不返回列表)、l.reverse()。

python刷題寶 python 刷題時的坑 新手

python3 多程序和多執行緒 多程序 multiprocessing 模組就是跨平台版本的多程序模組。提供了乙個 process 類來代表乙個程序物件。from multiprocessing import processimport os 子程序要執行的 def run proc name p...

python刷題題庫 python題庫刷題訓練

python 標準庫 math 中用來計算平方根的函式是.a sqrt b pow c power d abs c python 源 程式編譯後的擴充套件名為 a py b pdf c.python基礎100練習題 其它 工作范文 實用文件。例項 001 數字組合 python 期末試題題庫 c t...

刷題刷題 京東

題目 二維陣列為三列多行是陣列,每行存有三個數字,分別用ai,bi,ci標示 當某行的三個數字全都小於另一行的三個數字時,即 ai思路 對於第一列反向排序,保證第一列數從大到小排序。之後用後面的行依次與前面的行進行對比,將無效行的價值置為零。include include includelong l...