持續更 (此貼只記錄需要掌握的知識點,不貼**)
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...