zoukankan      html  css  js  c++  java
  • 【LeetCode练习题】Remove Duplicates from Sorted List II

    Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

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

    题目意思:

    凡是给定链表里出现的重复的元素,要一个不留的删掉!!!

    解题思路:

    这题挺简单的,LeetCode里还有一道题 Remove Duplicates from Sorted List ,这是它的升级版,两个的思路都是差不多的。

    使用一个p和一个del指针,p负责遍历链表发现重复元素,del负责指向重复的元素的节点然后删掉他们。

    注意,为了处理第一个节点方便,我们增加了一个dummy节点。

    代码如下:

     1 class Solution {
     2 public:
     3     bool judgeDuplicates(ListNode *p){
     4         if(p->next == NULL)
     5             return false;
     6         return (p->val == p->next->val);
     7     }
     8 
     9     ListNode *deleteDuplicates(ListNode *head) {
    10         if(head == NULL)
    11             return NULL;
    12         ListNode *dummy = new ListNode(0);
    13         dummy->next = head;
    14         ListNode *p = dummy,*del = NULL;
    15         
    16         while(p->next != NULL){
    17             if(judgeDuplicates(p->next)){
    18                 int val =p->next->val;
    19                 while(p->next != NULL && p->next->val == val){
    20                     del = p->next;
    21                     p->next = del->next;
    22                     delete del;
    23                 }
    24             }
    25             else{
    26                 p = p->next;
    27             }
    28         }
    29 
    30         del = dummy;
    31         dummy = dummy->next;
    32         delete del;
    33         return dummy;
    34     }
    35 };
  • 相关阅读:
    函数声明例子
    税收工资分级
    attribute函数
    输出结果有误
    scanf_s()函数与数组,运行环境VS2013
    格式化输出
    功能点介绍和用户场景
    第二次作业合作版
    word count
    第一次作业
  • 原文地址:https://www.cnblogs.com/4everlove/p/3641668.html
Copyright © 2011-2022 走看看