Leetcode 删除排序链表中的重复元素
2021-03-29 本文已影响0人
Yohann丶blog

题目描述
leetcode 第83题:删除排序链表中的重复元素
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例:
list1.jpeg
输入:head = [1,1,2]
输出:[1,2]
解题方法
链表
原址题解
- 解题思路
使用指针
cur
表示当前节点开始遍历链表head
如果当前节点数字cur.val
等于下一个节点数字cur.next.val
将cur.next
指针cur.next.next
,反之将cur
指向cur.next
遍历完成,直接返回head
即可
- 复杂度
时间复杂度:O(n),n为链表的长度
空间复杂度:O(1)
- 代码实现
python3
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head: return head
cur = head
while cur.next:
if cur.val==cur.next.val:
cur.next = cur.next.next
else:
cur = cur.next
return head
php
class Solution {
function deleteDuplicates($head) {
if(!$head) return $head;
$cur = $head;
while($cur->next){
if($cur->val==$cur->next->val){
$cur->next = $cur->next->next;
}else{
$cur = $cur->next;
}
}
return $head;
}
}