编写一个函数来删除单链表中的重复最小节节点
时间: 2024-12-29 16:34:42 浏览: 9
在单链表中,"最小节节点"通常是指该节点包含的元素是最小的。如果链表中有重复的最小值,我们想要删除的是第一个遇到的重复最小节点。这里是一个简单的Python示例,说明如何编写一个函数来实现这个功能:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def remove_duplicate_min(head):
# 初始化一个空链表和两个指针
dummy = ListNode(0) # 创建哑节点作为头节点
dummy.next = head
min_val = float('inf') # 存储当前找到的最小值
prev_min = None # 指向重复最小值的前一个节点
while head:
if head.val <= min_val:
# 如果新节点值小于等于已知最小值
min_val = head.val
prev_min = dummy # 更新最小值及其前一个节点
else:
# 如果新节点值大于最小值,检查是否有重复最小值
if prev_min and prev_min.next == head:
# 如果找到了重复的最小值,则删除它
prev_min.next = head.next
prev_min = head # 进入下一个节点
head = head.next
return dummy.next # 返回新的非重复最小值链表的头部
# 示例:
# 输入: 1->1->2->3->3->4
# 输出: 1->2->3->4 (重复的1已被删除)
```
阅读全文