博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode---Remove Duplicates from Sorted List II
阅读量:6354 次
发布时间:2019-06-22

本文共 1455 字,大约阅读时间需要 4 分钟。

题意: 给出单链表的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 };

 

转载于:https://www.cnblogs.com/Stomach-ache/p/3724342.html

你可能感兴趣的文章
转:Fedora16安装教程
查看>>
技术普及帖:你刚才在淘宝上买了一件东西
查看>>
Python使用Scrapy爬虫框架全站爬取图片并保存本地(@妹子图@)
查看>>
UVA 1394 And Then There Was One 约瑟夫环数学方法
查看>>
cookie和session
查看>>
MySQL命令行--导入导出数据库
查看>>
OkHttp使用进阶(译自OkHttp官方教程)
查看>>
【BZOJ3144】【HNOI2013】切糕
查看>>
C语言指针入门
查看>>
cmake检测g++编译器是否支持c++11
查看>>
有关Oracle数据库中同义词
查看>>
Ubuntu10.4下配置telnet服务
查看>>
IM 之 融云
查看>>
前言《iOS网络高级编程:iPhone和iPad的企业应用开发》(书籍学习)
查看>>
shell学习笔记(2)
查看>>
node_modules
查看>>
第一个爬虫测试
查看>>
Spring.net 间接调用被AOP拦截的方法失效(无法进入aop的拦截方法)
查看>>
Mysql 不同版本 说明
查看>>
常见BUG
查看>>