golang中怎么利用leetcode 删除链表重复元素
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇文章给大家分享的是有关golang中怎么利用leetcode 删除链表重复元素,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、删除
千家信息网最后更新 2025年01月24日golang中怎么利用leetcode 删除链表重复元素
本篇文章给大家分享的是有关golang中怎么利用leetcode 删除链表重复元素,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
一、删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解题思路:由于是排序链表,所以,直接按照遍历的思路就可以解
1,如果cur.Val==next.Val,cur.Next=next.Next
2,链表正常遍历就行了
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func deleteDuplicates(head *ListNode) *ListNode { cur:=head if cur==nil{ return cur } next:=cur.Next for next !=nil{ fmt.Println(cur,next) if cur.Val==next.Val{ next=next.Next cur.Next=next fmt.Println(cur,next) }else{ cur=next next=next.Next } } return head}
二、删除链表中重复元素(没有排序)
给定一个无序链表,删除所有含有重复数字的节点。
示例 1:
输入: 1->3->2->3->5->4->4
输出: 1->3->2->5->4
示例 2:
输入: 1->1->1->2->3
输出: 1->2->3
这种情况下就需要对元素值进行hash,如果不存在则忽略元素
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func deleteDuplicates(head *ListNode) *ListNode { h:=&ListNode{} h.Next=head cur:=head m:=make(map[int]int) next:=cur.Next for cur!=nil && next!=nil{ m[cur.Val]++ if m[next.Val]==0{ cur=next next=next.Next }else{ cur.Next=next.Next next=next.Next } } if next!=nil && m[next.Val]==0 { cur.Next=next }else{ cur.Next=nil } return h.Next }
三、删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
解题思路:
1,始终要让pre在cur的前面,通过判断cur.val == cur.next.val判断重复元素是否存在。
2,为了简化,给链表加一个头部
h -> 1 -> 2 3 3 4 -> 4 -> 5
| |
pre cur
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func deleteDuplicates(head *ListNode) *ListNode { h:=&ListNode{} h.Next=head cur:=head pre:=h for cur!=nil{ flag:=false for cur.Next!=nil && cur.Val==cur.Next.Val{ cur=cur.Next flag=true } if flag{ pre.Next=cur.Next }else{ pre.Next=cur pre=cur } cur=cur.Next } return h.Next}
以上就是golang中怎么利用leetcode 删除链表重复元素,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
元素
示例
排序
输入
输出
思路
数字
更多
知识
篇文章
节点
原始
实用
头部
就是
工作会
情况
文章
看吧
知识点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
lol服务器更新
网络安全工培训
无法连接至远程服务器
软件开发技术总监待遇
宁河区项目网络技术售后保障
软件开发工程师招聘面试
网络安全在我身边手抄报
全区网络安全大会讲话
怎么禁止别人扫描服务器
深圳连锁软件开发
中关村软件开发工资
网络安全导读课心得
攻击服务器d
六律科技互联网有限公司
网上软件开发培训
sae数据库密码
svn服务器绿色版
数据库中同时查两个id的值
酒店网络安全性推荐怎么登陆
宝塔服务器安全
服务器挂机有什么好处
软件开发交付源码费用
湖北惠普服务器维修技术
金融银行的软件开发
互联网科技城腾讯
php 连接数据库封装
西安市网络技术培训班
通州西集网络安全园招聘
网络安全专业学习困难吗
inspec数据库的分析