zoukankan      html  css  js  c++  java
  • LeetCode---Remove Duplicates from Sorted List II

    题目链接

    题意: 给出单链表的head指针, 要求去除链表中所有出现重复的元素, 如1->2->3->3->4->4->5, 返回 1->2->5

    这题纠结了有两天,  重要的是把思路想清楚然后就可以痛苦的A掉, 不然老是会绕来绕去...

    我的大体思路是这样的: 使用三个指针 pre保存链表中前一个没有出现重复的结点, p保存当前测试是否出现重复的结点, q用来测试p.

    使用flag标记是否是第一次找到没有出现重复结点. 如果当前被测试的结点为空或者后面已经没有结点, 直接返回.

    附上代码:

     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         ListNode *p = head, *pre = head;
    13         int flag = 0;
    14         while (true) {
    15             if (p == NULL or p->next == NULL) {
    16                 return head;
    17             } else {
    18                 ListNode *q = p->next;
    19                 while (q!= NULL and q->val == p->val) {
    20                     q = q->next;
    21                 }
    22                 if (p->next == q) {
    23                     if (flag == 0) {
    24                         flag = 1;
    25                         head = p;
    26                     } else {
    27                         pre = p;
    28                     }
    29                 } else {
    30                     if (flag == 0) {
    31                         head = pre = q;
    32                     } else {
    33                         pre->next = q;
    34                     }
    35                 }
    36                 p = q;
    37             }
    38         }
    39         return head;
    40     }
    41 };
  • 相关阅读:
    Visual Studio中配置Beyond Compare为版本比较工具
    Restsharp常见格式的发送分析
    dex2jar反编译dex文件
    Apktool反编译apk资源文件
    远程桌面复制粘贴突然失效的问题
    C#4.0 HTTP协议无法使用TLS1.2的问题
    TFS-Git官方教程
    git 换行符问题
    NPM升级
    NodeJS笔记(一)-免安装设置
  • 原文地址:https://www.cnblogs.com/Stomach-ache/p/3724342.html
Copyright © 2011-2022 走看看