Open guodongxiaren opened 4 years ago
这是一道简单题。 但是有一个意想不到的解法,使用二级指针可以不保存pre节点指针。
/**
* 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** node = &head;
while ((*node) != NULL && (*node)->next != NULL) {
if ((*node)->val == (*node)->next->val) {
*node = (*node)->next;
} else {
node = &((*node)->next);
}
}
return head;
}
};
而Java拥有天生的优势!
public ListNode deleteDuplicates(ListNode head) {
ListNode current = head;
while (current != null && current.next != null) {
if (current.next.val == current.val) {
current.next = current.next.next;
} else {
current = current.next;
}
}
return head;
}
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
示例 2: