leetcode-83-刪除排序鏈表中的重複元素


本題是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; // 快指針
 一樣的,判斷兩個值是否相等,便可,代碼很簡單

code

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;
    }

你的鼓勵也是我創做的動力

打賞地址索引

相關文章
相關標籤/搜索