1.遇到链表遍历就是
2.运行结果超过双80%
public ListNode deleteDuplicates (ListNode head) { //定义一个空链表(目标链表)把不重复的节点添加到该链表 ListNode prv = new ListNode(0); ListNode node = prv; //定义一个临时变量 保存删除节点的值,初始化为最大 int temp = Integer.MAX_VALUE; //比较的是当前节点和他的下一节点 所以都不能为空 while(head!=null && head.next!=null){ //如果当前节点的值等于他子节点的值 if(head.val == head.next.val){ //先保存当前的值给临时变量 temp = head.val; //继续往下走如果 遍历的节点等于保存的值 那就继续往下走,走到不相等或者到最后一个节点 while(head!=null && temp == head.val){ head =head.next; } }else{ //这里是不相等 temp = head.val; //取一个临时节点 保存当前节点的下一个节点 ListNode tp = head.next; //将下一节点置空,只保留当前节点 head.next = null; //将当前节点赋给目标链表 node.next = head; //将临时的节点 重新赋值给head head = tp; //目标链表 指针下推 node=node.next; } } //前面while循环结束条件可能是head.next==null ,所以这里判断下 不为空直接加入目标节点 if(head !=null) node.next = head; //返回目标链表的next节点 return prv.next; }
看明白的点个赞再走吖