题解 | #删除有序链表中重复的元素-I# 双指针
删除有序链表中重复的元素-I
https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
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) {
if(head == null || head.next == null){
return head;
}
ListNode p1 = head;
ListNode p2 = head.next;
while(p2 != null){
if(p1.val == p2.val){
p1.next = p2.next;
p2 = p2.next;
}else{
p1 = p1.next;
p2 = p2.next;
}
}
return head;
}
}
