LeetCode Solutions : Remove Duplicates from Sorted List

【題目描述】

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

【編程步驟】

 * 1. 處理特殊情況:如果該鏈表爲空或只有一個結點,說明此鏈表沒有重複的元素,直接返回頭指針head;

即:if(head==null||head.next==null) 
            return head;
 * 2. 定義遍歷指針visited,如果當前結點的值等於下個結點的值,說明存在副本,則移除下個結點;否則繼續往下遍歷;即

while(visited!=null&&visited.next!=null){
            if(visited.val==visited.next.val)
                visited.next=visited.next.next;
            else
               visited=visited.next;
        }


【代碼實現】

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head==null||head.next==null) 
            return head;
        ListNode visited=head;
        while(visited!=null&&visited.next!=null){
            if(visited.val==visited.next.val)
                visited.next=visited.next.next;
            else
               visited=visited.next;
        }
        return head;
    }
}
【複雜度分析】
由於只需要遍歷一次,故時間複雜度爲O(n),空間複雜度爲O(1)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章