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;
        }
    };

  • 相关阅读:
    企业如何搭建数据分析平台
    如何查看Android设备上的分区信息
    从传统企业谈大数据的战略意义
    金融行业的BI应用分析
    Android 5.x 权限问题解决方法
    unity使用ugui自制调色面板
    手机模式及分区
    高通8x12平台开机画面制作工具
    Unity插件
    Android开发小问题集
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5414441.html
Copyright © 2011-2022 走看看