题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
if(head==null||head.next==null){
return head;
}
ListNode pre=new ListNode(-1);
pre.next=head;
ListNode node1=head,node2=head.next,nodePre=pre;
while(node1!=null&&node2!=null){
//如果遇到相同的就进入下一步
if(node1.val==node2.val){
//让node2快速遍历到不相同部分
while(node2!=null&&node1.val==node2.val){
node2=node2.next;
}
//从nodePro开始到node2不相同部分,中间的相同部分全部清除
node1=nodePre;
node1.next=node2;
continue;
}
nodePre=node1;
node1=node1.next;
node2=node2.next;
}
return pre.next;
}
}
查看7道真题和解析