删除排序链表中的重复元素
func deleteDuplicates( head *ListNode ) *ListNode { new := &ListNode{Next:head} pre,cur := new,head for cur != nil{ for cur.Next != nil && cur.Val == cur.Next.Val{ cur = cur.Next } pre.Next = cur //删除中间重复节点 pre=cur //移动pre节点 cur = cur.Next //移动cur节点 } return new.Next }
https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/
双指针法
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ //思路: //1、遍历当前节点cur,记录cur的前一个节点为pre //2、如果cur有重复节点,跳过 //3、通过pre和cur的前后关系判断,cur是否有重复关系,如果pre.Next==cur,则说明cur无重复 func deleteDuplicates(head *ListNode) *ListNode{ new := &ListNode{Next:head} pre,cur := new,head for cur != nil{ for cur.Next != nil && cur.Val == cur.Next.Val{ cur = cur.Next } if pre.Next == cur{//pre.Next == cur,说明cur.Val这个值没有重复的元素 pre = cur }else{ pre.Next = cur.Next//相当于删除中间重复的元素节点 } cur = cur.Next } return new.Next }
等风起的那一天,我已准备好一切
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~