Leetcode習題集 鍊錶

2022-07-07 13:48:16 字數 900 閱讀 4657

這裡記錄一些我刷題的思路方便之後進行複習重溫,同時也方便進行新增

p141-環形鍊錶

class

solution

listnode* reverse(listnode*head)

return

pre;

}};

使用翻轉鍊錶,判斷返回的指標與傳進的指標是否相同,時間複雜度是o(n)(?可能),空間複雜度是o(1).

class

solution

return

true

; }

};

使用快慢指標floyd 判圈演算法,如果有環則兔子會與龜碰上,但沒有環則會到null,這裡有乙個小知識點就是!fast||!fast->next這個條件需要先判斷fast是否為空,順序不能翻轉否則可能進入死迴圈,因為判斷的順序從左到右。

p19-刪除鍊錶的倒數第n個節點

class

solution

ptr=ptr->next;

i++;

}return

reverse(head);

}listnode* reverse(listnode*head)

return

pre;

}};

兩次翻轉。

class

solution

if(!fast) return head->next;

while(fast->next)

slow->next=slow->next->next;

return

head;

}};

快慢指標,將最後一段的間隔設定好,即快指標先跑結尾長度,然後雙指標齊頭並進。

leetcode習題集 92 反轉鍊錶 II

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null public class p92int index 1 listnode p head if m 1 last.next ...

leetcode習題集 143 重排鍊錶

給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 1 5 2...

leetcode習題集 54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...