leetcode刷题系列----模式2(Datastructure 链表)- 83:Remove Duplicates from Sorted List 删除排序链表中的重复元素
Tips
- 更多题解请见本系列目录
- 使用双指针解决。
- 链表类问题注意指针要随着迭代更新到next。
Python
# 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: ListNode) -> ListNode:
previous = head
if not head: return head
while(previous.next):
current = previous.next
if (previous.val==current.val): previous.next = current.next
else: previous=previous.next
return head
C++
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* previous = head;
ListNode* current = head;
if(head==nullptr) return head;
while(previous->next!=nullptr)
{
current = previous->next;
if(current->val==previous->val) previous->next=current->next;
else previous = previous->next;
}
return head;
}
};
C#
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int val=0, ListNode next=null) {
* this.val = val;
* this.next = next;
* }
* }
*/
public class Solution {
public ListNode DeleteDuplicates(ListNode head) {
ListNode previous = head;
ListNode current = head;
if(head==null) return head;
while(previous.next!=null)
{
current = previous.next;
if(current.val==previous.val) previous.next = current.next;
else previous = previous.next;
}
return head;
}
}
Java
/**
* 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) {
ListNode previous = head;
ListNode current = head;
if(head==null) return head;
while(previous.next!=null)
{
current = previous.next;
if(current.val==previous.val) previous.next = current.next;
else previous = previous.next;
}
return head;
}
}
本文介绍了一种使用双指针技术删除排序链表中重复元素的方法,并提供了Python、C++、C#及Java四种语言的实现示例。

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



