83. 删除排序链表中的重复元素
原题链接:
https://leetcode.cn/problems/remove-duplicates-from-sorted-list/
1 . 思路分析
目标:删除已经排序的链表里面的重复元素。
思路:
- 如果当前节点的值与下一个节点的值相同,则将当前节点的next指针指向下一个不同的节点。
- 否则,我们将当前节点移动到下一个节点。
- 最后,我们返回链表的头节点。
2.画图模拟样例
2.1 样例1
2.2 样例2
3. 代码实现
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
//首先检查链表是否为空
if (head == null) {
return null;
}
//利用一个临时变量引用指向头节点
ListNode current = head;
//遍历链表
while (current.next != null) {
//当前节点的值与下一个节点的值相同,则将当前节点的next指针指向下一个的下一个的节点
if (current.val == current.next.val) {
current.next = current.next.next;
} else {
//否则,我们将当前节点移动到下一个节点
current = current.next;
}
}
return head;
}
}