php实现删除链表中重复的节点

一、总结

二、php实现删除链表中重复的节点

题目描述:

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

三、总结

代码一:

 <?php
/*class ListNode{
var $val;
var $next = NULL;
function __construct($x){
$this->val = $x;
}
}*/
function deleteDuplication($pHead)
{
if($pHead==null){ //各种情况判断
return null;
}
if($pHead!=null&&$pHead->next==null){
return $pHead;
}
$cur = $pHead;
if($pHead->next->val==$pHead->val){
$cur = $pHead->next->next;
while($cur!=null&&$cur->val==$pHead->val){
$cur = $cur->next;
}
return deleteDuplication($cur);
}else{
$cur = $pHead->next;
$pHead->next = deleteDuplication($cur);
return $pHead;
}
}

代码二:没ac

 <?php
/*class ListNode{
var $val;
var $next = NULL;
function __construct($x){
$this->val = $x;
}
}*/
function deleteDuplication($pHead)
{
$head=new ListNode(-1);
$ans=$head;
$head->next=$pHead;
while($head){
if($head->next&&$head->next->next){
$l1=$head->next;
$l2=$l1->next;
while($l1->val==$l2->val){
$head->next=$l2->next;
if($l2->next) $l2=$l2->next;
else break;
}
$head=$head->next;
}
}
return $ans->next;
}

代码三:

 public static ListNode deleteDuplication(ListNode pHead) {

         ListNode first = new ListNode(-1);//设置一个trick

         first.next = pHead;

         ListNode p = pHead;
ListNode last = first;
while (p != null && p.next != null) {
if (p.val == p.next.val) {
int val = p.val;
while (p!= null&&p.val == val)
p = p.next;
last.next = p;
} else {
last = p;
p = p.next;
}
}
return first.next;
}

代码四:

 递归
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead)
{
if (pHead==NULL)
return NULL;
if (pHead!=NULL && pHead->next==NULL)
return pHead; ListNode* current; if ( pHead->next->val==pHead->val){
current=pHead->next->next;
while (current != NULL && current->val==pHead->val)
current=current->next;
return deleteDuplication(current);
} else {
current=pHead->next;
pHead->next=deleteDuplication(current);
return pHead;
}
}
};

最新文章

  1. hessian接口参数,子类与父类不能有同名字段解决方法
  2. 关于Repeater嵌套绑定的问题
  3. malloc 函数到底做了什么?
  4. Mac下配置Maven
  5. bzoj 1412 [ZJOI2009]狼和羊的故事(最小割)
  6. SharePoint 2010 Ribbon的实现
  7. [Android Framework]linux 文件系统
  8. 记一次坑die(误)的题目--HDU2553--(DFS)
  9. 关于启动文件分析的(MDK-ARM) 【转】
  10. 熟悉Objective—C
  11. sql server DbHelperSQL类
  12. 20170922xlVBA_GetCellTextFromWordDocument
  13. 我不是学Java的!我不是学Java的!我不是学Java的!。。。。【自我催眠中】
  14. Linux就业技术指导(二):简历项目经验示例
  15. 关于modelsim时序仿真的几篇文章
  16. 设计模式之笔记--职责链模式(Chain of Responsibility)
  17. Sql的一些常规判断
  18. nodejs module/require
  19. 【线段树】HDU1394 - Minimum Inversion Number
  20. 《C#高效编程》读书笔记02-用运行时常量(readonly)而不是编译期常量(const)

热门文章

  1. colrm---删除文件制定列
  2. ping---测试主机之间网络的连通性
  3. 图片上传5-多个图片上传,独立项目Demo和源码
  4. [React] Define defaultProps and PropTypes as static methods in class component
  5. actionBar-shareIcon 分享按钮的修改
  6. thinkphp图片处理
  7. 【Codeforces Round #452 (Div. 2) B】Months and Years
  8. ASP.Net中页面传值的几种方式
  9. Linux常用运维命令小结
  10. easy ui 验证