Go语言学习之力扣-删除排序链表中的重复元素|Go主题月

364 阅读1分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之力扣-位1的个数|Go主题月

  • 位1的个数

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言学习之力扣-删除排序链表中的重复元素

来源于:83. 删除排序链表中的重复元素

2.题目描述

存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次 。 返回同样按升序排列的结果链表。

image.png 示例 1

输入:head = [1,2,2,3,4]
输出:[1,2,3,4]

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序排列

3.思路与方法

  • 由题意可知重复的元素在链表中出现的位置是连续的,因此我们只需要进行一次遍历,就可以删除重复元素;
  • 由于输入是链表,我们可以用一个指针fir指向链表的头节点,随后开始对链表进行遍历
  • 如果指针fir与fir.next的元素值相同,可以利用fir.next=fie.next.next将该节点元素删掉。
  • 以此类推,用这种方法遍历完链表后,返回链表头节点输出即可。

4.具体实现代码

func deleteDuplicates(head *ListNode) *ListNode {
    if head==nil{
        return nil
    }
    fir:=head
    for fir.Next!= nil{
        if fir.Val==fir.Next.Val{
            fir.Next=fir.Next.Next
        }else{
            fir=fir.Next
        }
    }
    return head
}

力扣结果输出为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。