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

2018-11-23  本文已影响7人  Ivan_Lan

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

示例 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;
    }
};
上一篇下一篇

猜你喜欢

热点阅读