給定一個(gè)排序鏈表,刪除所有重復(fù)的元素,使得每個(gè)元素只出現(xiàn)一次。
示例 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; // 動(dòng)態(tài)指針1
if(head!=nullptr){ // 非空鏈表才進(jìn)行下面的操作
ListNode* j=head->next; // 動(dòng)態(tài)指針2
while(j){ // 循環(huán)條件:動(dòng)態(tài)指針2未走到鏈表末端
if(i->val==j->val){
i->next=j->next; // 出現(xiàn)重復(fù)值時(shí),刪掉,即i指向j的下一個(gè)節(jié)點(diǎn)
j=j->next; // j移動(dòng)到下一個(gè)節(jié)點(diǎn),繼續(xù)比較i和j
}
else{
i=i->next; // 如果不相等,則兩個(gè)指針同時(shí)向后移動(dòng)
j=j->next;
}
}
}
return head;
}
};