zoukankan      html  css  js  c++  java
  • Leetcode题目: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.

    题目解答:使用三个指针,p标明已经处理好的链表部分;q用来指代当前待比较的节点;r用来依次遍历是否有重复的元素。

    同样使用虚拟头结点,来避免过多的判断。

    代码如下:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* deleteDuplicates(ListNode* head) {
            ListNode * Head = new ListNode(-1);
            Head -> next = head;
            ListNode *p = Head;
            ListNode *q = p -> next;
            while(q != NULL)
            {
                ListNode *r = q -> next;
                while( (r != NULL) && (r -> val == q -> val) )
                {
                    ListNode *tmp = r -> next;
                    delete r;
                    r = tmp;
                }
                q -> next = r;
                p -> next = q;
                p = q;
                q = q -> next;
            }
            ListNode *tmp = Head -> next;
            delete Head;
            return tmp;
        }
    };

  • 相关阅读:
    数据持久化-- json、pickle
    socket编程介绍
    RHEL/CentOS 下安装yum源地址汇集---不定期更新
    设置阿里云pip源,加速pip更新速度
    pacemaker+corosync+haporxy高可用集群部署
    etcd数据库备份与还原
    PEM格式的证书转换格式
    CentOS 7 上 yum 安装python3
    webconsole提示undefined: ssh.InsecureIgnoreHostkey错误解决方案
    oh my zsh 配置文件
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5414441.html
Copyright © 2011-2022 走看看