leetcode刷題紀實(四)

2021-10-04 05:56:19 字數 888 閱讀 6917

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。

如果有兩個中間結點,則返回第二個中間結點。

class

solution

return slow;}}

;

這是快慢指標的經典解法,通過快慢指標移動速度的不同,來尋找到鍊錶的中間結點,而最好的速度比為2:1,這樣就可以使得當快指標到達鍊錶尾的時候,慢指標剛好到達鍊錶的中間結點,最後則可返回慢指標,即鍊錶的中間結點。

也還有其他的方法,但是不太好,比如說利用輔助陣列以及陣列下標來獲得

位運算,result<<1就相當於result*2,result|=1(result|=0)相當於result++(不變)同時考慮到題中條件為節點不超過30個,不需要用long long int ,int 足矣。

class

solution

return result;}}

;

class

solution

else

//值首次出現

}return head;

}//方法2:

listnode*

removeduplicatenodes

(listnode* head)

else

}

cur = cur-

>next;

}return head;}}

;

1、使用hashset儲存首次出現的值 時間複雜度o(n)、空間複雜度o(n)

2、刪除當前節點後面的值等於它的所有節點 時間複雜度o(n^2)、空間複雜度o(1)

leetcode刷題紀實(三)

反轉乙個單鏈表。class solution return cur 比較常見的思路,利用雙指標,乙個在前,乙個在後,進行就地翻轉 如果說便於理解的話,其實還可以寫出一種三指標的就地翻轉格式,就不寫了 第二個方法 頭插法 class solution head q return head 第三種,遞迴...

Leetcode刷題防忘錄(四)

目錄 valid parentheses 棧,簡單 search in rotated sorted array 查詢,中等 search in rotated sorted array ii 查詢,中等 word search 回溯,dfs,中等 combinations 回溯,dfs,中等 題目...

LeetCode刷題 18 四數之和

給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。給定陣列 nums 1 0,1,0,2,2 和 tar...