Leetcode 83 删除排序链表中的重复元素 Python C++ 史上最详细题解系列
2018-08-25 13:24
956 查看
鸽了好几天了,结果这道题又这么水。。。
但还是写下,一步一个脚印来。
每天更新一道python or C++ leetcode题,力求讲解清晰准确,客官们可以点赞或者关注。
题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2 输出: 1->2
示例 2:
输入: 1->1->2->3->3 输出: 1->2->3
思路应该说是不难的,要注意,这里是排序好了的链表。所以相同的元素会在一起。
当你检测到你当前指针的值与下一项相同时,说明你应该进行删除操作。删除就是一个while循环检测需不需要删除,需要就删。
Python
[code]# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def deleteDuplicates(self, head): """ :type head: ListNode :rtype: ListNode """ i = head#头部指针 if not i: return head while i.next is not None:#当i的下一项存在时 while i.next is not None and i.next.val == i.val:#有重复项的话 i.next = i.next.next#删除 i = i.next#比如1->1->2,会删掉中间的1,然后这一步i跳到2 if not i: break return head
C++
[code]/** * 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) { if (!head) return head; ListNode* p = head; while (p && p->next){ while (p->next && p->next->val == p->val){ p->next = p->next->next; } p = p->next; } return head; } };
阅读更多
相关文章推荐
- leetcode(83)—— 删除已排序链表重复元素(Remove Duplicates from Sorted List)
- 【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】
- 83. 删除排序链表中的重复元素
- LeetCode83. 删除排序链表中的重复元素
- [Leetcode] 83. 删除排序链表中的重复元素 java
- (Java) LeetCode 83. Remove Duplicates from Sorted List —— 删除排序链表中的重复元素
- [LeetCode] Remove Duplicates from Sorted List 删除排序链表中的重复元素
- [LeetCode] 83. Remove Duplicates from Sorted List 删除排序链表中的重复元素 @python
- python_lintcode_115不同的路径 II_112删除排序链表中的重复元素
- [Leetcode] Remove duplicates from sorted list 从已排序的链表中删除重复元素
- LeetCode 83. 删除排序链表中的重复元素
- leetcode83,删除有序链表中的重复元素
- LeetCode 83 Remove Duplicates from Sorted List(从已排序链表中移除重复元素)(*)
- [Leetcode] 82. 删除排序链表中的重复元素 II java
- (Java) LeetCode 82. Remove Duplicates from Sorted List II —— 删除排序链表中的重复元素 II
- <LeetCode> 题112:删除排序链表中的重复元素
- 112. 删除排序链表中的重复元素(remove-duplicates-from-sorted-list)(c++)----lintcode面试题之链表
- 【Python】简单例题tuple和list的转换;实现删除一个list里重复的元素;对list a进行排序,并且从最后一个开始删除重复元素
- Java实现-删除排序链表的重复元素1
- <LeetCode> 题113:删除排序链表中的重复元素2