LeetCode 83 删除排序链表中的重复元素
1.题目描述:
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。 示例 1:
输入:head = [1,1,2]
输出:[1,2]
2. 题解:
时间复杂度😮(N),遍历原链表一遍; 空间复杂度😮(1);
C++:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if ( !head) return head ;
ListNode* p = head ;
while ( p->next) {
if(p->val == p->next->val) p->next = p->next->next ;
else p = p->next ;
}
return head ;
}
};
Golang:
func deleteDuplicates(head *ListNode) *ListNode {
if ( head == nil ){ return head}
p := head
for p.Next != nil {
if (p.Val == p.Next.Val) {
p.Next = p.Next.Next
}else {
p = p.Next
}
}
return head
}
|