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 };
  • 相关阅读:
    e.g.-basic-Si
    Telephone interview with Youyou Tu
    Mo2C-tag
    Usage of “symmetrical” and “symmetric”
    Xcrysden-2
    The partial charge density (1)
    利用 AWK 的数值计算功能提升工作效率(转载)
    扩展程序
    选择排序
    装饰递归函数
  • 原文地址:https://www.cnblogs.com/zhuli19901106/p/3493123.html
Copyright © 2011-2022 走看看