题解 | #删除链表峰值#

删除链表峰值

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

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务