剑指offer面试题[57]-删除链表中重复的结点
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};
*/
class Solution {
public:ListNode* deleteDuplication(ListNode* pHead){if(pHead==NULL)return pHead;ListNode* pPreNode=NULL;ListNode* pNode=pHead;while(pNode!=NULL){ListNode* pNext=pNode->next; bool needDelet=false; //定义不需要删除标记needDelet,为false时,不需要删除,为true时,需要删除。if(pNext!=NULL&&pNode->val==pNext->val)needDelet=true; if(!needDelet) //当前结点值和下一结点值不相等,不需要删除{pPreNode=pNode;pNode=pNext;}else //当前结点值和下一结点值相等{ListNode* pToBeDel=pNode;int value=pNode->val;//while(pToBeDel!=NULL&&pToBeDel->val==pNode->val) //错误,因为pNode在变while(pToBeDel!=NULL&&pToBeDel->val==value){ pNext=pToBeDel->next;delete pToBeDel;pToBeDel=NULL;pToBeDel=pNext;}if(pPreNode==NULL) //如果头结点被删除了pHead=pNext;elsepPreNode->next=pNext;pNode=pNext;}}return pHead;}
};
剑指offer面试题[57]-删除链表中重复的结点相关推荐
- 剑指offer(C++)-JZ76:删除链表中重复的结点(数据结构-链表)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回 ...
- 剑指offer——面试题51:数组中重复的数字
剑指offer--面试题51:数组中重复的数字 Solution1: 20180910更新.利用数组做一次hash映射,时间复杂度为O(n)O(n)O(n),空间复杂度O(n)O(n)O(n). cl ...
- [剑指offer]面试题15:链表中倒数第k个结点
面试题15:链表中倒数第k个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6个结点,从头结点开始 ...
- 剑指Offer - 面试题18. 删除链表的节点
1. 题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val ...
- 剑指offer面试题15:链表中倒数第K个节点
题目:输入一个链表,输出该链表的倒数第K个节点.为了符合大多数人的习惯,本题从1开始计数,即链表尾节点是倒数第一个节点. 解题思路: 解法一:一般情况下,单向链表无法从后一个节点获取到它前面的节点,可 ...
- 剑指offer面试题18. 删除链表的节点(双指针)(链表)
题目描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 思路 详见链接 代码 class Solution:def deleteNode(self, ...
- 剑指offer——面试题15:链表中倒数第k个结点
Solution1: 典型的双指针题目.但要考虑到很多边界条件! 注意此题中陷阱很多,具体看书中解释 20181008修改代码 /* struct ListNode {int val;struct L ...
- 剑指offer——面试题57:删除链表中重复的结点
剑指offer--面试题57:删除链表中重复的结点 Solution1: 删两遍,自己想的破算法.理论上时间复杂度也是O(n)O(n)O(n),并非最优解. /* struct ListNode {i ...
- 剑指offer——面试题56:链表中环的入口
剑指offer--面试题56:链表中环的入口 Solution1: 非常经典的快慢指针套路题.下面这个链接讲解的很详细.其实问题的关键在于为什么快指针的速度一定是慢指针的2倍,3倍或4倍行不行?? 快 ...
最新文章
- 取出list中属性_你是否用过List<T>和List<?>?
- python制作excel表格-excel表格中怎么制作一份燃尽图表
- 怎样在 Github 上找自己喜欢的东西?
- 【小米面试题】-给定一个具体时间,计算时针与分针之间的角度
- android java广播,[原]Android应用程序发送广播(sendBroadcast)的过程分析
- One-Page AlphaGo --十分钟看懂 AlphaGo 的核心算法!
- 一步一步写STL:空间配置器(1)
- Java读书笔记(8)-单例模式
- Mac ndk编译for Android
- C++中的->用于赋值
- java继承和接口连接怎么用_继承与接口的使用
- python开发cms_Wagtail介绍 — 基于Django的Python CMS
- 国内外20多个科研论文下载神器(科研小白成长记 番外篇)
- Golang的广东11选5出售协程调度机制与GOMAXPROCS性能调优
- Flashpaper序列号
- 输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)
- MySQL的基本操作(五)
- 首席新媒体运营黎想教程:电商运营必须掌握的5个公式
- 唯一插件化Replugin源码及原理深度剖析--插件的安装、加载原理
- 60 Linux 常用 命令
热门文章
- Round trip
- Tcp keepalive详解
- 分布式红锁的加锁的lua底层设计原理
- 13muduo_base库源码分析(四)
- javamailsender注入失败_Springboot 之 JavaMailSender发送电子邮件
- centos使用python_Centos7使用Python3
- java中地图查询比较慢,在java中缓慢的地图
- js 调用c语言函数看,web前端:JS高级---函数中的this的指向,函数的不同调用方式...
- AdneneBoumessouer / MVTec-Anomaly-Detection学习笔记
- Qt信号与槽传递QList动态数组