题解 | #删除链表峰值#
删除链表峰值
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
}