博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PigyChan_LeetCode 82. 删除排序链表中的重复元素 II
阅读量:3948 次
发布时间:2019-05-24

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

82. 删除排序链表中的重复元素 II

难度中等

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

示例 1:

输入: 1->2->3->3->4->4->5

输出: 1->2->5
示例 2:

输入: 1->1->1->2->3

输出: 2->3

思路1.0(已看题解):

(1)通过两个指针判断相邻的两个节点值是否相同

(2)如果存在重复则进行去重
(3)设置bool变量判断两类 前后值不一样的情况
1)前值是重复元素的最后一位
2)前值是单独的一位

代码1.0:

class Solution {
public: ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL || head->next == NULL) return head; ListNode* ans = new ListNode(-1); ans->next = head; ListNode* cur = ans->next; ListNode* pre = ans; bool isConti = false; while (cur != NULL && cur->next != NULL) {
int left = cur->val; int right = cur->next->val; //若两个节点相同,删除重复元素 if (left == right) {
cur->next = cur->next->next; isConti = true; } //两个节点值不同,仍然存在重复元素 else if (left != right && isConti) {
pre->next = cur->next; cur = cur->next; isConti = false; } //两个节点值不同,不存在重复元素 else if (left != right && !isConti) {
cur = cur->next; pre = pre->next; } } if (isConti) {
pre->next = NULL; } return ans->next; }};

在这里插入图片描述

可通过扩大遍历指针的覆盖范围解决 需要前后值进行比较的问题

转载地址:http://uvowi.baihongyu.com/

你可能感兴趣的文章
Android开发:如何实现TCP和UDP传输
查看>>
Android电源管理相关应用技巧分享
查看>>
Android录音失真具体解决方案
查看>>
Android根文件系统相关应用介绍
查看>>
Android文件系统深入剖析
查看>>
Android判断网络状态方法详解
查看>>
在Android上实现Junit单元测试的四部曲
查看>>
有效控制Android应用程序的耗电量
查看>>
Android术语列表概览
查看>>
全方位解读Android多媒体框架源码
查看>>
Android音乐编程的管理音频硬件
查看>>
Android UI控件组合应用之一:建立数据模型
查看>>
避免Andriod平台图片失真的图片形式
查看>>
Android之Gridview图片列表
查看>>
objdump的使用方法
查看>>
编译错误处理noproguard.classes-with-local.dex已杀死
查看>>
LTE - CSFB技术
查看>>
GSM链路层信令协议
查看>>
技术道德
查看>>
“需求为王”才是根本
查看>>