题解 | #删除链表峰值#

删除链表峰值

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

知识点:链表,遍历。

分析:只需要找到峰值即可,三个节点必然挨着。使用两个指针pre,cur表示前个节点和当前节点,设置好边界条件,遍历一次去除所有峰值。

题目误解:最开始以为已删除峰值后的形成的新的峰值也要删除。

import java.util.*;
public class Solution {
    public ListNode deleteNodes (ListNode head) {
        if (head == null || head.next == null) return head;
        ListNode pre = head;
        ListNode cur = head.next;
        while (cur.next != null) {
            if (cur.val > pre.val && cur.val > cur.next.val) {
                pre.next = cur.next;
                cur = cur.next;
                if (cur.next == null) {
                    break;
                }
            }
            pre = pre.next;
            cur = cur.next;
        }
        return head;
    }
}

全部评论

相关推荐

10-10 00:14
门头沟学院 Java
程序员小白条:20年架构师,无工资
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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