删除链表中重复的结点_java
2024-09-06 21:43:04
package algorithms; /*
public class ListNode {
int val;
ListNode next = null; ListNode(int val) {
this.val = val;
}
}
*/ /*
*
* 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,
重复的结点不保留,返回链表头指针。(认真审题)
例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 从头遍历整个链表 如果当前节点pNode的值与下一个节点相同
那么他们就是重复的节点 需要被删除
为了保证删除之后的链表仍然是相连的
需要把当前节点的前一个节点pPreNode保存起来
循环的过程中确保pPreNode始终与下一个没有重复的节点连接在一起 */ public class DeleteDuplication {
public ListNode deleteDuplication(ListNode pHead) {
ListNode pPreNode = null;
ListNode pNode = pHead;
while (pNode != null) {
ListNode pNext = pNode.next;
boolean needDelete = false;
if (pNext != null && pNext.val == pNode.val)
needDelete = true;
if (!needDelete) {
pPreNode = pNode;
pNode = pNode.next;
} else {
ListNode pDeleteNode = pNode;
int value = pDeleteNode.val;
while (pDeleteNode != null && pDeleteNode.val == value) {
pNext = pDeleteNode.next;
pDeleteNode = pNext;
}
if (pPreNode == null)
pHead = pNext;
else
pPreNode.next = pNext;
pNode = pNext;
}
} return pHead;
}
}
最新文章
- cmd执行SQL语句
- os 模块
- BATCH(BAT批处理命令语法)
- RSYNC--数据迁移、备份
- eclipse关联源码 Failed to create the part's controls
- 使用go语言后的感受
- c#学习汇总-----------------多态
- SQL Server2005 表分区三步曲(zz)
- pycharm5工具免费分享及安装教程
- 剑指offer-机器人的运动范围
- JavaScript基础知识(函数)
- linux下安装apache环境
- mysql查看某库表大小
- 9. Palindrome Number (考虑负数的情况)
- mysql分享一:运维角度浅谈MySQL数据库优化
- Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
- ElasticSearch(十):springboot集成ElasticSearch集群完成数据的增,删,改
- Jmeter中Websocket协议支持包的使用(转)
- C++ STL 常用算术和生成算法
- 【Linux】通过top语句可以查看压力测试的实时服务器状态。(可以通过百度Linux top查看相关内容)