最佳解法
参考:灵茶山艾府
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return head
cur = head
while cur and cur.next:
if cur.val == cur.next.val:
cur.next = cur.next.next
else:
cur = cur.next
return head
法1:快慢指针
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode slow = head, fast = head.next;
while (fast != null) {
if (fast.val > slow.val) {
slow.next = fast;
slow = slow.next;
}
fast = fast.next;
}
slow.next = null;
return head;
}
}
本文介绍了如何通过快慢指针的方法解决链表中删除重复节点的问题,利用两个指针,快指针每次移动两步,慢指针每次移动一步,当快指针遇到不重复的值时,将慢指针的下一个节点连接到当前节点,从而实现链表去重。
463

被折叠的 条评论
为什么被折叠?



