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

