LeetCode 實踐練習36 40

2021-09-12 09:31:49 字數 2481 閱讀 2008

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

方法:求解數獨的題是在之前那道 valid sudoku 驗證數獨的基礎上的延伸,之前那道題讓我們驗證給定的陣列是否為數獨陣列,這道讓我們求解數獨陣列,跟此題類似的有 46題permutations 全排列,77題combinations 組合項,51題 n-queens n皇后問題等等,其中尤其是跟 n-queens n皇后問題的解題思路及其相似,對於每個需要填數字的格仔帶入1到9,每代入乙個數字都判定其是否合法,如果合法就繼續下一次遞迴,結束時把數字設回』.』,判斷新加入的數字是否合法時,只需要判定當前數字是否合法,不需要判定這個陣列是否為數獨陣列.

方法:對於前乙個數,找出相同元素的個數,把個數和該元素存到新的string裡.

c++**如下:

方法:類似於這種要求返回所有符合解十有**都是利用到遞迴,而且解題的思路都大同小異,都是要另寫乙個遞迴函式,這裡我們新加入三個變數,start記錄當前的遞迴的下標,out為一解,res儲存所有已經得到的解.(深度優先畫圖理解一下)

方法:類似於上一題,只是在for迴圈加上條件,防止重複項,另外上一題是排序好的,這樣可以防止重複的結果出現,這題應該首先排序.

c++**:

class solution 

,res)

;return res;

}void

combinationsumdfs

(vector<

int>

& candidates,

int target,

int start,vector<

int> out,vector

int>>

& res)

for(

int i = start; i < candidates.

size()

;i++)}

};

LeetCode 實踐練習16 20

方法 還是先將陣列排個序,然後遍歷陣列,思路跟上一題相似,都是先確定乙個數,然後用兩個指標left和right來滑動尋找另外兩個數,每確定就求三數之和,然後算和給定值的差的絕對值存在newdiff中,比較更新即可。遞迴的思想 不是很了解,需詳細了解 方法 在這裡為了避免重複項,我們使用了stl中的s...

LeetCode 實踐練習51 55

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

LeetCode 實踐練習61 65

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