知识点:链表
难度:简单
题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例:
方法:引入一个新指针
Golang:
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteDuplicates(head *ListNode) *ListNode {
//如果链表为空,则返回空
if head == nil {
return nil
}
//引入cur指针,令其指向头元素
cur := head
for cur.Next != nil {
//如果cur.Val == cur.Next.Val,就使cur.Next = cur.Next.Next
if cur.Val == cur.Next.Val {
cur.Next = cur.Next.Next
} else {
//如果cur.Val != cur.Next.Val,则使cur指针指向下一个元素
cur = cur.Next
}
}
return head
}
执行:
复杂度分析:
时间复杂度:O(n)
空间复杂度:O(1)