/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution{
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode * deleteDuplicates(ListNode *head) {
// write your code here
if (head==NULL||head->next==NULL){
return head;
}
ListNode *dummynode = new ListNode(0);
dummynode->next = head;
ListNode *p = dummynode;
while(p->next != NULL && p->next->next != NULL){
if (p->next->val == p->next->next->val){
int value = p->next->val;
p->next = p->next->next->next;
while (p->next != NULL && p->next->val == value ){
//p->next->val == value && p->next != NULL 这个顺序就不行
p->next = p->next->next;
}
}
else p = p->next;
}
return dummynode->next;
}
};
对于第二个while中的判断条件,&&左边必须先放入p->next!=NULL进行判断,否则若p->next==NULL,并且先判断p->next->val==value,这时系统会报错。
删除排序链表中的重复数字 II
最新推荐文章于 2023-01-13 17:39:18 发布