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;
}
}

最新文章

  1. cmd执行SQL语句
  2. os 模块
  3. BATCH(BAT批处理命令语法)
  4. RSYNC--数据迁移、备份
  5. eclipse关联源码 Failed to create the part's controls
  6. 使用go语言后的感受
  7. c#学习汇总-----------------多态
  8. SQL Server2005 表分区三步曲(zz)
  9. pycharm5工具免费分享及安装教程
  10. 剑指offer-机器人的运动范围
  11. JavaScript基础知识(函数)
  12. linux下安装apache环境
  13. mysql查看某库表大小
  14. 9. Palindrome Number (考虑负数的情况)
  15. mysql分享一:运维角度浅谈MySQL数据库优化
  16. Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
  17. ElasticSearch(十):springboot集成ElasticSearch集群完成数据的增,删,改
  18. Jmeter中Websocket协议支持包的使用(转)
  19. C++ STL 常用算术和生成算法
  20. 【Linux】通过top语句可以查看压力测试的实时服务器状态。(可以通过百度Linux top查看相关内容)

热门文章

  1. chrome.socket
  2. debug 和release 的区别
  3. 【bzoj1303】[CQOI2009]中位数图
  4. Vijos 1144 小胖守皇宫 【树形DP】
  5. P1198 [JSOI2008]最大数(线段树)
  6. Bing必应地图中国API - 添加实时交通信息
  7. HDU 1394 线段树or 树状数组~
  8. poj 2186(tarjan+缩点)
  9. 洛谷 P1328 生活大爆炸版石头剪刀布 —— 模拟
  10. SVN主干与分支的合并 ***