题目
leetCode 第 83 题,删除排序链表中的重复元素 关联类型:链表
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
做题时间
class Solution {
public ListNode deleteDuplicates(ListNode head) {
}
}
以上给出方法输入参数,完成作答。
题目分析
- 此题目和之前的 「删除排序数组中的重复项」题目是类似的
- 此题目可以使用快慢指针进行求解
- 慢指针用于记录当前位置
- 快指针用于循环,与慢指针的值进行比较
解答分析
本文只分析本人做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。
解答成功:
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:37.9 MB, 在所有 Java 提交中击败了47.75%的用户
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null) {//空的直接返回
return null;
}
ListNode slowNode = head; //给慢指针赋值
ListNode fastNode = head.next; //给快指针赋值
while (fastNode != null) {
if (slowNode.val != fastNode.val) {//如果不相等
slowNode.next = fastNode; //慢指针的 next 指向快指针位置
slowNode = fastNode; //将快指针 node 赋值给慢指针
}
fastNode = fastNode.next; //快指针指向 next
}
slowNode.next = null; //最后给慢指针 next 指向 null
return head; //返回链表头即可
}
}