本題是leetcode,地址:83. 刪除排序鏈表中的重複元素html
給定一個排序鏈表,刪除全部重複的元素,使得每一個元素只出現一次。java
示例 1:數組
輸入: 1->1->2
輸出: 1->2
示例 2:指針輸入: 1->1->2->3->3
輸出: 1->2->3code
此題跟leetcode-26-刪除排序數組中的重複項解法很相似,只不過此次是鏈表;回顧一下上一個題的解法htm
快慢指針的妙用,利用兩個指針i, j,初始化值爲0和1,當兩個指針對應的值相等時,指針j+1,繼續執行循環;而當兩個指針對應的值不相等時,將指針i+1,並將指針j對用的值賦值給指針i,而後指針j+1,繼續向下執行循環,直到循環結束。blog
細節須要注意:最後慢指針是最後一個數據的索引,題目要求是返回數組的長度,因此須要 +1返回;排序
ListNode left = head; // 慢指針 ListNode right = head.next; // 快指針 一樣的,判斷兩個值是否相等,便可,代碼很簡單
public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null){ return head; } ListNode left = head; ListNode right = head.next; while (right != null) { int v = right.val; if(v == left.val) { left.next = right.next; } else { left = left.next; } right = right.next; } return head; }
打賞地址索引