zoukankan      html  css  js  c++  java
  • LeetCode

    Remove Duplicates from Sorted List

    2013.12.26 21:36

    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.

    Solution:

      Removing the duplicates from a list requires two pointers ptr1 and ptr2. With ptr1 pointing to current node, and ptr2 next to ptr1, the operation can be done in only one-pass. Please see the code below.

      Time complexity is O(n), space complexity is O(1).

    Accepted code:

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode *deleteDuplicates(ListNode *head) {
    12         // Note: The Solution object is instantiated only once and is reused by each test case.
    13         if(head == nullptr){
    14             return head;
    15         }
    16         
    17         ListNode *ptr1, *ptr2;
    18 
    19         ptr1 = head;
    20         ptr2 = head->next;
    21         while(ptr2 != nullptr){
    22             if(ptr1->val == ptr2->val){
    23                 ptr1->next = ptr2->next;
    24                 delete ptr2;
    25                 ptr2 = ptr1->next;
    26             }else{
    27                 ptr1 = ptr1->next;
    28                 ptr2 = ptr1->next;
    29             }
    30         }
    31 
    32         return head;
    33     }
    34 };
  • 相关阅读:
    NOIP2020 游记
    李超线段树
    选举「elections」
    Alt+数字输入
    素数
    CSP-S2020 爆炸记
    [CF487C] Prefix Product Sequence
    [CF489E] Hiking
    L2-019 悄悄关注 (25 分)
    L2-032 彩虹瓶 (25 分)
  • 原文地址:https://www.cnblogs.com/zhuli19901106/p/3493123.html
Copyright © 2011-2022 走看看