题解 | #删除链表峰值#

删除链表峰值

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;
    }
}

全部评论

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务