题解 | #删除链表峰值#
删除链表峰值
https://www.nowcoder.com/practice/30a06e4e4aa549198d85deef1bab6d25
- 知识点:链表,链表节点的删除
- 题面文字分析:题目要求是删除链表中值大于前后的节点,并且首尾节点可以不用删除。思路很清晰,从第二个节点遍历即可,并且判断当前节点的next节点不为空即可。只需两个变量,当前节点curr与前置节点prev,每次循环,将这两个变量向后移动即可
- 本题使用编程语言:Java
- 本题示例代码如下:
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteNodes (ListNode head) { // write code here ListNode prev = head; ListNode curr = head.next; while(curr != null) { if(curr.next != null) { // 判断当前节点是否大于前后节点 if(curr.val > prev.val && curr.val > curr.next.val) { // 将前节点的next指向当前节点的next将当前节点删除 prev.next = curr.next; } } // 重新赋值参数 prev = curr; curr = curr.next; } return head; } }