题解 | #删除链表峰值#

删除链表峰值

https://www.nowcoder.com/practice/30a06e4e4aa549198d85deef1bab6d25

考察知识点:链表删除、双指针

解答方法:本题主要考察的是链表结合双指针的用法。新建一个链表头部,并让A指针负责新链表的拼接、B指针负责旧链表的遍历,通过条件控制A指针拼接是否对B指针指向的元素进行拼接来达到目的。同样的做法可以用于链表元素去重等情况

本题解所使用编程语言:golang

package main

import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
*/
func deleteNodes( head *ListNode ) *ListNode {
    // write code here
    if head == nil {
        return nil
    }
    
    newList := &ListNode{head.Val, head}
    pre := newList

    for ptr := head; ptr != nil; ptr = ptr.Next {
        if ptr.Val > pre.Val && ptr.Next != nil && ptr.Val > ptr.Next.Val {
            continue
        }
        pre.Next = ptr
        pre = ptr
    }

    return newList.Next
}

全部评论

相关推荐

每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
就只能3个月,但是要求长期全职实习
Swaying:你确实是能长期实习啊,但是你那时候有事也没啥办法嘛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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