* struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** * * @param head ListNode类 * @return ListNode类 */ ListNode* deleteDuplicates(ListNode* head) { // write code here //判断重复->删除重复元素 if(head==NULL || head->next == NULL) return head; if(head->next->next == NULL) { if(head->val==head->next->val) { head->next = NULL; return head; } } ListNode* xxx = head->next; ListNode* bef= head; while(xxx!=NULL) { ListNode* cur = xxx->next; //保存下一个节点数据 if(bef->val == xxx->val) { xxx->next = NULL; //将当前xxx节点释放 bef->next = cur; xxx = cur; } else { bef = xxx; xxx = xxx->next; } } return head; } };
这道题其实很简单,但是需要注意一下链表保存的节点,head节点是否是保存数据的节点,比如牛客中就是,也有一些head节点仅仅是指针。这里思路就是遍历链表,找到重复数字就把该节点删除就行了