LeetCode(Remove Duplicates from Sorted List) 两道删除排序链表中重复数字
来源:互联网 发布:java布局思想 编辑:程序博客网 时间:2024/05/24 04:29
题目要求:
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
.
ListNode *deleteDuplicates(ListNode *head) { if(head == NULL || head->next == NULL) return head; ListNode* pre = head, *cur = head->next; while(cur != NULL) { if(pre->val == cur->val) { pre->next = cur->next; delete cur; cur = pre->next; } else { pre = cur; cur = cur->next; } } return head; }
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
.
ListNode *deleteDuplicates(ListNode *head) { if(head == NULL || head->next == NULL) return head; ListNode* virtual_head = new ListNode(0); virtual_head->next = head; ListNode* del_begin = virtual_head;//添加一个虚拟头结点方便删除头结点 while(del_begin != NULL) { ListNode* del_end = del_begin->next; while(del_end != NULL && del_end->next != NULL && del_end->next->val == del_end->val)//找到要删除重复区间的最后一个节点 { del_end = del_end->next; } if(del_begin->next != del_end && del_end != NULL)//如果有重复区间存在,将del_begin节点的下一位指向del_end的下一个节点,并逐个删除区间中的节点 { ListNode* node = del_begin->next; del_begin->next = del_end->next; while(node != del_end) { ListNode* pnext = node->next; delete node; node = pnext; } delete del_end; } else del_begin = del_begin->next; } return virtual_head->next; }
0 0
- LeetCode(Remove Duplicates from Sorted List) 两道删除排序链表中重复数字
- (LeetCode)Remove Duplicates from Sorted List --- 链表中删除重复元素
- [Lintcode]Remove Duplicates from Sorted List II 删除排序链表中的重复数字 II
- 【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】
- Remove Duplicates from Sorted List 删除链表中重复的元素
- LeetCode | Remove Duplicates from Sorted List(删除链表中重复的数据)
- LeetCode | Remove Duplicates from Sorted List II(删除链表中重复结点2)
- LeetCode OJ 之 Remove Duplicates from Sorted List(删除有序链表中重复的数)
- Leetcode Remove Duplicates from Sorted List II 删除链表中重复的元素II
- [LeetCode] Remove Duplicates from Sorted Linked List 从排序链表中去掉重复值
- 113.Remove Duplicates from Sorted List II-删除排序链表中的重复数字 II(中等题)
- leetcode——Remove Duplicates from Sorted List II 删除排序字符串中重复字符(AC)
- leetCode 82.Remove Duplicates from Sorted List II (删除排序链表的重复II) 解题思路和方法
- leetCode 83.Remove Duplicates from Sorted List(删除排序链表的重复) 解题思路和方法
- 【LeetCode-面试算法经典-Java实现】【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】
- leetcode(83)—— 删除已排序链表重复元素(Remove Duplicates from Sorted List)
- 【leetcode 移除有序序列重复数字】Remove Duplicates from Sorted Array(List) I(II)
- leetcode83---Remove Duplicates from Sorted List(删除重复元素)
- 背包专辑-基础篇(持续更新中)
- GCDObjC
- char*, wchat_t*互转 及 A2T, T2A宏及其实现原理
- c# 实现datagridview 用回车向右移动,到头换行,支持编辑模式
- java阻塞队列以及非阻塞队列
- LeetCode(Remove Duplicates from Sorted List) 两道删除排序链表中重复数字
- asp.net服务器控件生命周期
- 第五周学习内容
- ValueTrackingSlider
- IOS中是使用libcurl注意事项
- poj 2986 A Triangle and a Circle 圆与三角形的公共面积
- SWTableViewCell
- 关于异常的一点点小结
- 关于<%= str%>和<%# str %>两种方式的应用实例