题解 | 删除有序链表中重复的元素-I
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) {
ListNode current = head;
if (head == null || head.next == null) {
return head;
}
while (current != null) {
if (current.next != null && current.next.val == current.val) {
//如果相等,则要跳过当前的节点
current.next = current.next.next;
} else {
current = current.next;
}
}
return head;
}
}
犯了一个错误, current = current.next; 写成这样会有问题,写成下面这样会导致 {1,1,1}这个case不通过,因为第一个1跳过第二个1,把next指向第三个1的时候,current也滚动到了最后,导致没有重复判断第一个1的next是否是跟他想相等
while (current != null) {
if (current.next != null && current.next.val == current.val) {//如果相等,则要跳过当前的节点
current.next = current.next.next;}
current = current.next;
}

查看7道真题和解析