LeetCode-83. Remove Duplicates from Sorted List https://leetcode.com/problems/remove-duplicates-from-sorted-list/
题目描述
Given the head
of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.
Example 1:
Input: head = [1,1,2] Output: [1,2]
Example 2:
Input: head = [1,1,2,3,3] Output: [1,2,3]
Constraints:
- The number of nodes in the list is in the range
[0, 300]
. -100 <= Node.val <= 100
- The list is guaranteed to be sorted in ascending order.
解题思路
【C++解法】
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
1、递归
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(head == NULL || head->next == NULL) return head;
head->next = deleteDuplicates(head->next);
return head->val == head->next->val ? head->next : head;
}
};
2、循环
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(!head || !head->next) return head;
ListNode* curr = head->next;
ListNode* prev = head;
while (curr) {
if (curr->val == prev->val) {prev->next = curr->next;}
else {prev = curr;}
curr = prev->next;
}
return head;
}
};
【Java解法】
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
1、递归
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) {return head;}
head.next = deleteDuplicates(head.next);
return head.val == head.next.val ? head.next : head;
}
}
2、循环
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) {return head;}
ListNode pre = head;
ListNode cur = head.next;
while (cur != null) {
if (pre.val == cur.val) {pre.next = cur.next;}
else {pre = cur;}
cur = pre.next;
}
return head;
}
}