剑指offer--删除重复节点

package 删除重复节点;




/*需要两个指针,一个指向前一个节点preNode,另一个指向当前节点node,
 * 如果遇到相等的节点,node向后移动,preNode不动,存下node.val方便后面的比较,
 * 直到遇到node和node.next不相等,preNode就可以指向node.next
 注意:链表开头可能就开始有重复的节点,
所以默认preNode=null,在后面的给preNode赋值的时候,
若preNode为null,那就把pHead设置为node.next
*/
public class Problem18 {


public static void main(String[] args) {
ListNode node1=new ListNode();
ListNode node2=new ListNode();
ListNode node3=new ListNode();
ListNode node4=new ListNode();
ListNode node5=new ListNode();
ListNode node6=new ListNode();
ListNode node7=new ListNode();
node1.date=1;
node2.date=2;
node3.date=3;
node4.date=3;
node5.date=4;
node6.date=4;
node7.date=5;
node1.nextNode=node2;
node2.nextNode=node3;
node3.nextNode=node4;
node4.nextNode=node5;
node5.nextNode=node6;
node6.nextNode=node7;
Problem18 problem18=new Problem18();
ListNode nListNode=problem18.delListNode(node1);
System.out.println(nListNode.date);
}
public static ListNode delListNode(ListNode headNode){

ListNode preNode=null;
ListNode node=headNode;
while(node!=null){
if(node.nextNode!=null&&node.date==node.nextNode.date){
int value=node.date;
while(node.nextNode!=null&&node.nextNode.date==value){
node=node.nextNode;
}
if(preNode==null){
headNode=node.nextNode;
}else{
headNode.nextNode=node.nextNode;
}
}else{
headNode=node;
}
node=node.nextNode;
}
return headNode;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值