美文网首页
Leetcode链表easy | 83. 删除排序链表中的重复元

Leetcode链表easy | 83. 删除排序链表中的重复元

作者: Ivan_Lan | 来源:发表于2018-11-23 20:20 被阅读7次

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    示例 1:

    输入: 1->1->2
    输出: 1->2
    示例 2:

    输入: 1->1->2->3->3
    输出: 1->2->3

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* deleteDuplicates(ListNode* head) {
            ListNode* i =head;  //  动态指针1
            if(head!=nullptr){    //  非空链表才进行下面的操作
                ListNode* j=head->next;  // 动态指针2
                while(j){   //  循环条件:动态指针2未走到链表末端
                    if(i->val==j->val){   
                        i->next=j->next;  //  出现重复值时,删掉,即i指向j的下一个节点
                        j=j->next;  //  j移动到下一个节点,继续比较i和j
                    }
                    else{     
                        i=i->next;  //  如果不相等,则两个指针同时向后移动
                        j=j->next;
                    }
                }
            }
            return head;
        }
    };
    

    相关文章

      网友评论

          本文标题:Leetcode链表easy | 83. 删除排序链表中的重复元

          本文链接:https://www.haomeiwen.com/subject/ufssqqtx.html