1. 程式人生 > >LeetCode83 刪除連結串列中的重複元素 保留一個

LeetCode83 刪除連結串列中的重複元素 保留一個

給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。

示例 1: 輸入: 1->1->2 輸出: 1->2

示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 | |

和劍指offer中的連結串列問題題設不相同,此題要求保留一個有重複的元素。 設定倆個指標,p,q,分別代表當前節點和當前節點的next。

  1. 將q指標往後移動,指向第一個和p.val不相同的節點, 通過next連線。p.next=q;
  2. p=q,q再重新指向下一個節點。
  3. 重複迭代的過程。在這裡插入圖片描述
class Solution {
  public ListNode deleteDuplicates(ListNode head) {
        if(head==null || head.next==null){
            return head;
        }
        ListNode p=head ;
        ListNode q=p.next;
        while(p!=null&& q!=null){
            while(q!=null && p.val==q.val){
                q=q.next;
            }
            p.next=q;
            p=q;
            if(p!=null){
                q=p.next;
            }
        }
return head;

    }
}