給定一個已排序的鏈表的頭?head
?,?刪除所有重復的元素,使每個元素只出現一次?。返回?已排序的鏈表?。
?
輸入:head = [1,1,2] 輸出:[1,2]
思路一:模擬題意
struct ListNode* deleteDuplicates(struct ListNode* head){if(head==NULL||head->next==NULL)return head;struct ListNode*p = head,*q = head->next;while(q!=NULL){if(p->val==q->val)p->next = q->next;else{p = p->next;}q = q->next;}return head; }
分析:
本題與上題相似,但非將所有重復的元素刪除,而是將多的重復元素刪除,可添加判斷語句判斷前一個與后一個val值是否相等來決定是否放入鏈表中,最后輸出鏈表
總結:
本題考察鏈表刪除操作,添加好判斷語句即可做出。