题解 | #删除链表峰值#

删除链表峰值

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

全部评论

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务