沐茗@煙燻機器人
[Leetcode 讀書會][week 4]
上週沒空整理寫了啥
26, 27, 28, 31, 32, 33, 35, 36
easy: 26, 27, 28, 35
medium: 31, 33, 36
hard: 32
沐茗@煙燻機器人
problem 26. Remove Duplicates from Sorted Array
my soultion
[Easy]
將一個排序好的數列中,重複出現的數字移除,並計算有多少個不一樣的的數字
因為是排列好的,從頭跑一輪,碰到跟上一個數字相同的就跳過,不相同的就往前移,很簡單的題目
沐茗@煙燻機器人
problem 27. Remove Element
my soultion
[Easy]
跟26題相似,不過這次是要移除指定的數字
做法也玩全相同,只是跳過的是根指定數字相同的部分
沐茗@煙燻機器人
沐茗@煙燻機器人
總之之前學過一個演算法用來搜尋字串
要先掃一次目標要找的字串,看看他有出現過哪些跟開頭重複的部分
這類題目最喜歡出"mississippi"
沐茗@煙燻機器人
例如假設搜尋的字串是
sip
我就只要一個字元一個字元比看看有沒有依序出現sip就好,發現有錯時直接拉回第一個字元s就可以了
沐茗@煙燻機器人
好複雜喔不想說明←
沐茗@煙燻機器人
[預留空間如果有空想說明再說]←
沐茗@煙燻機器人
problem 31. Next Permutation
my soultion
[Medium]
給定一個數字序列,找到下一個用到同樣多數字、比他大的最小序列
例如給123要找到132,給151要找511,而如果已經是最大的序列,救回傳最小的序列,例如給321要回傳123。
沐茗@煙燻機器人
做法
Step 1. 從個位數往高位數找,找到最短的不是最大的子序列
> 例如6975236972,要找到6972(2跟72跟972都沒辦法透過交換位置變大)
> 找法:只要檢查是每個位數是不是比高一位數的數字小就可以了

Step 2. 找到比最高位數大一號的數字,放在最大位數
> 原因:因為最高位數之後是最大序列,無法再變大,所以必須改變提高最高位數才有辦法變大
> 按照上面的例子會變成7962

Step 3. 把剩下沒用到的位數排序
> 變成7269
沐茗@煙燻機器人
problem 32. Longest Valid Parentheses
my soultion
[Hard]
尋找最長合法括弧。
我的做法會另外準備一份跟輸入相同長度的table用來記錄狀態,記錄下每一個括弧是否合法。
從頭到尾掃一輪,遇到左括弧就記錄數量,遇到右括弧,如果還有未使用的左括弧,將兩個括弧都設為合法,否則設為不合法。
最後,把table再從頭到尾掃一次,算出每一段連續合法的部分有多長,輸出最大的。
Ἐσκός@貓咪大戰車
我這週也沒寫
沐茗@煙燻機器人
problem 33. Search in Rotated Sorted Array
my soultion
[Medium]
在一個排序好但經過平移的數字陣列中,找指定數字,且限制時間不能先做排序
可能是目前寫過覺得最有趣的題目之一ww
使用binary搜尋法,但是因為不是玩全排序好,需要多做一些特別的判定
沐茗@煙燻機器人
shadowevor: 主揪加油www
沐茗@煙燻機器人
problem 35. Search Insert Position
my soultion
[Easy]
給伊個排序的數字,與一個要插入的數字,找該數字該插在哪裡
二元搜尋法。
沐茗@煙燻機器人
problem 36. Valid Sudoku
my soultion
[Medium]
給數獨盤面,檢查是否合法
就,正常解數獨的方法,真對每行每列每個方快建表,從頭到尾掃一次看有沒有衝突。
沐茗@煙燻機器人
===
載入新的回覆