leetcode83題 題解 翻譯 C語言版 Python版
阿新 • • 發佈:2019-02-05
83. Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
83.從有序列表中移除重複元素
給定一個有序的連結串列,刪除所有重複元素從而讓同樣的元素只出現一次。
比如:
給定1->1->2,返回1->2。
給定1->1->2->3->3,返回1->2->3。
思路:既然是連結串列已經是有序的了,那麼只需遍歷一次即可。遍歷時需要考慮當前結點的值與下一結點的值,如果相等就移除下一結點,注意此時要保持當前結點不變,而下一結點變成原來的下下結點。如果值不同,那麼只需把兩個結點指標都後移即可。
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* deleteDuplicates(struct ListNode* head) { struct ListNode* p = head; while (p && p->next){ if (p->val == p->next->val){ p->next = p->next->next; } else p = p->next; } return head; }
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def deleteDuplicates(self, head): """ :type head: ListNode :rtype: ListNode """ p = head while p and p.next: if p.val == p.next.val: p.next = p.next.next else: p = p.next return head