83 删除排序链表中的重复元素(Easy)

  • 链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/

  • 思路

    • 因为输入的列表已排序,因此可以通过将当前结点的值与它之后的结点进行比较来确定它是否为重复结点。
    • 如果它是重复的,更改当前结点的 next 指针,以便它跳过下一个结点并直接指向下一个结点之后的结点。如果不是重复的,直接递增当前节点
  • Code

    class Solution {
    public:
        ListNode* deleteDuplicates(ListNode* head) {
            ListNode *cur = head;
            //cur!=nullptr:1->1->2,cur->next!=nullptr:1->1->2->3->3
            while (cur != nullptr && cur->next != nullptr) {
                if (cur->val == cur->next->val) {
                    cur->next = cur->next->next;
                }
                else {
                    cur = cur->next;
                }
            }
            return head;
        }
    };
    
  • 复杂度分析

    • 时间复杂度:\(O(n)\),其中 \(n\) 是列表中的结点数。列表中的每个结点都检查一次以确定它是否重复。
    • 空间复杂度:\(O(1)\)

posted @ 2020-06-21 12:26  nxgy  阅读(105)  评论(0编辑  收藏  举报