题解 | #删除链表峰值#
删除链表峰值
https://www.nowcoder.com/practice/30a06e4e4aa549198d85deef1bab6d25
知识点:这个题目考察了链表的基本操作和节点删除的逻辑。 以下是对题目解答方法的文字分析: 为了处理链表的首节点,我们创建了一个虚拟头节点(dummy node)。使用两个指针,prev 和 curr,分别指向当前节点和当前节点的前一个节点。从头节点开始遍历链表,比较当前节点和下一个节点的值。如果当前节点的值大于下一个节点的值,那么当前节点就是需要删除的节点,我们将其删除并更新指针,否则,移动指针继续遍历下一个节点。遍历完成后,返回链表的头节点。由于我们使用了虚拟头节点,因此真正的头节点是虚拟头节点的下一个节点。 完整的python代码如下: # class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @return ListNode类 # class Solution: def deleteNodes(self , head: ListNode) -> ListNode: # write code here dummy = ListNode(0) dummy.next = head prev = dummy curr = head while curr and curr.next: if curr.val > curr.next.val: if prev != dummy: prev.next = curr.next curr = curr.next else: prev = curr curr = curr.next return dummy.next