LeetCode 實踐練習16 20

2021-09-11 23:20:09 字數 2175 閱讀 4104

方法:還是先將陣列排個序,然後遍歷陣列,思路跟上一題相似,都是先確定乙個數,然後用兩個指標left和right來滑動尋找另外兩個數,每確定就求三數之和,然後算和給定值的差的絕對值存在newdiff中,比較更新即可。

遞迴的思想:(不是很了解,需詳細了解)

方法:在這裡為了避免重複項,我們使用了stl中的set,其特點是不能有重複,如果新加入的數在set中原本就存在的話,插入操作就會失敗,這樣能很好的避免的重複項的存在。此題的o(n^3)解法的思路跟 3sum 基本沒啥區別,就是多加了一層for迴圈,其他的都一樣。

方法:只允許一次遍歷,我們需要兩個指標來幫助我們。pre與cur指標。首先我們讓cur指標向前走n步,由於本體n一定有效,因此若cur指向空,說明n為鍊錶的長度,則需要移除的是首元素,此時返回head->next即可。若cur存在,我們再繼續往下走,此時pre也跟著走,cur走s-n步到達最後乙個元素,pre同樣也走s-n步,即相當於倒數第n個。移除pre指向的前乙個元素。修改指標跳過需要移除的元素實現即可。

c++解法:

class solution 

pre->next = pre->next->next;

//畫圖理解一下

方法:需要用到棧,我們開始遍歷輸入字串,如果當前字串為左半邊括號,則將其壓入棧中,如果遇到右半邊,取棧頂元素,若為空,直接返回false。 取出的棧頂元素若為對應的左半邊括號,則繼續迴圈,反之返回false。

c++**:

class solution '

&& parentheses.

top()!=

'}return parentheses.

empty()

;}};

LeetCode 實踐練習36 40

方法 遍歷每個數字的時候,就看看包含當前位置的行和列以及3x3小方陣中是否已經出現該數字,那麼我們需要三個標誌矩陣,分別記錄各行,各列,各小方陣是否出現某個數字,其中行和列標誌下標很好對應,就是小方陣的下標需要稍稍轉換一下.方法 求解數獨的題是在之前那道 valid sudoku 驗證數獨的基礎上的...

LeetCode 實踐練習51 55

方法 經典的n皇后問題,基本所有的演算法書都會包含的問題,經典的解法為回溯遞迴,一層層的向下掃瞄,需要用到乙個pos陣列,其中pos i 表示第i行皇后的位置,初始化為 1,然後從第0開始遞迴,每一行都一次遍歷各列,判斷如果在該位置皇后會不會有衝突,依次類推,當到最後乙個皇后放好後,一種解法就生成了...

LeetCode 實踐練習61 65

方法 此題一種方法,是利用快慢指標,快指標先走k步,然後兩個指標一起走,當快指標走到末尾時,滿指標指的下乙個位置即是新順序的頭結點 特殊情況鍊錶為空,k n 另一種方法,乙個指標即可,就是先遍歷整個鍊錶獲得鍊錶長度n,然後鍊錶的頭和尾接起來,然後往後走 n k n 就到達了新鍊錶的頭節點前乙個點,這...