【Leetcode】Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers,
leaving only distinct numbers from the original list.

For
example,
Given 1->2->3->3->4->4->5,
return 1->2->5.
Given 1->1->1->2->3,
return 2->3.

 1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9 class Solution {
10 public:
11 ListNode *deleteDuplicates(ListNode *head) {
12 if (head == nullptr || head->next == nullptr)
13 return head;
14 ListNode dummy(-1);
15 dummy.next = head;
16 ListNode *prev = &dummy, *cur = head;
17 while (cur != nullptr) {
18 bool flag = false;
19 while (cur->next != nullptr && cur->val == cur->next->val) {
20 flag = true;
21 prev->next = cur->next;
22 delete cur;
23 cur = prev->next;
24 }
25 if (flag) {
26 prev->next = cur->next;
27 delete cur;
28 cur = prev->next;
29 } else {
30 prev = cur;
31 cur = cur->next;
32 }
33 }
34 return dummy.next;
35 }
36 };

时间: 2024-10-20 00:27:09

【Leetcode】Remove Duplicates from Sorted List II的相关文章

【leetcode】Remove Duplicates from Sorted List II (middle)

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example,Given 1->2->3->3->4->4->5, return 1->2->5.Given 1->1->1->2->3, return 2->3.

【Leetcode】Remove Duplicates from Sorted Array II

题目:对上一题的延伸,每个数字可以出去2次. 思路:还是设置两个下标.第一个lenxb标记已去重的地方,第二个i标记待处理的位置.每次比较时,比较lenxb和lenxb-1两个位置,如果都相等,说明出现超过两次了:否则满足要求. 注意:通过上面的思路可知,特判情况是长度小于等于2时. PS:提交后16ms,在此题的提交时间第一队列最前位置.Yes! 代码: class Solution { public: int removeDuplicates(vector<int>& nums)

【LeetCode】Remove Duplicates from Sorted Array 解题报告

[LeetCode]Remove Duplicates from Sorted Array 解题报告 标签(空格分隔): LeetCode [LeetCode] https://leetcode.com/problems/remove-duplicates-from-sorted-array/ Total Accepted: 129010 Total Submissions: 384622 Difficulty: Easy Question Given a sorted array, remov

【leetcode】Remove Duplicates from sorted array

Remove Duplicates from sorted array 问题描述 Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant me

【leetcode】 Remove Duplicates from Sorted List

Given a sorted linked list, delete all duplicates such that each element appear only once. For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3. 给出一个已排序链表,删除所有重复的元素使每一个节点值只出现一次 思路: 1. 定义pCurNode,pNextNode两个

【leetcode】Remove Duplicates from Sorted List (easy)

Given a sorted linked list, delete all duplicates such that each element appear only once. For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3. 思路: 简单题,没什么好说的. class Solution { public: ListNode *deleteDupl

【LeetCode】Remove Duplicates from Sorted List

题意: Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3. 思路: 删除链表中的重复项,考察链表操作. 主要是用循环判断当前节点和下一级节点的值是否相同,是则修改当前节点

【Leetcode】Remove Duplicates from Sorted List in JAVA

Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3. 思路很简单,由于乖乖的sort好了,就是判断下一个是不是比它大就好了,如果大,那么跳过下一个直接link到下一个的下一

【Leetcode】【Medium】Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example,Given 1->2->3->3->4->4->5, return 1->2->5.Given 1->1->1->2->3, return 2->3.