這裡記錄一些我刷題的思路方便之後進行複習重溫,同時也方便進行新增
p141-環形鍊錶
classsolution
listnode* reverse(listnode*head)
return
pre;
}};
使用翻轉鍊錶,判斷返回的指標與傳進的指標是否相同,時間複雜度是o(n)(?可能),空間複雜度是o(1).
classsolution
return
true
; }
};
使用快慢指標floyd 判圈演算法,如果有環則兔子會與龜碰上,但沒有環則會到null,這裡有乙個小知識點就是!fast||!fast->next這個條件需要先判斷fast是否為空,順序不能翻轉否則可能進入死迴圈,因為判斷的順序從左到右。
p19-刪除鍊錶的倒數第n個節點
classsolution
ptr=ptr->next;
i++;
}return
reverse(head);
}listnode* reverse(listnode*head)
return
pre;
}};
兩次翻轉。
classsolution
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...