删除排序链表中的重复元素
2023-09-14 08:56:53 时间
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 }
相关文章
- 两个有序链表的合并
- Java实现 LeetCode 237 删除链表中的节点
- Java实现 LeetCode 148 排序链表
- Java实现 LeetCode 83 删除排序链表中的重复元素
- Java实现 LeetCode 83 删除排序链表中的重复元素
- Java实现 LeetCode 83 删除排序链表中的重复元素
- Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)
- Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)
- (剑指Offer)面试题17:合并两个排序的链表
- (剑指Offer)面试题5:从尾到头打印链表
- LeetCode(82):删除排序链表中的重复元素 II
- LeetCode(23):合并K个排序链表
- 【链表】LeetCode 148. 排序链表【中等】
- (链表专题) 83. 删除排序链表中的重复元素 ——【Leetcode每日一题】
- (链表专题) 21. 合并两个有序链表 ——【Leetcode每日一题】
- 【LeetCode 23】合并K个排序链表
- leetCode 82.Remove Duplicates from Sorted List II (删除排序链表的反复II) 解题思路和方法
- 剑指 Offer II 078. 合并排序链表 -由二至多
- 剑指 Offer II 029. 排序的循环链表-纯链表实现
- 合并两个排序的链表
- 习题 9.9 综合本章例9.9、例9.10和本章习题第7题、第8题,再编写一个主函数,先后调用这些函数。用以上5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插入结点。
- 合并2个排序的链表
- 链表的操作
- 数组与链表增删改查效率比较
- 剑指 Offer 52. 两个链表的第一个公共节点
- LeetCode 707. 设计链表
- LeetCode 82. 删除排序链表中的重复元素 II
- 【LeetCode】148. 排序链表