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