删除峰值
描述
农场主人有一群牛,他给每只牛都打了一个编号,编号由整数表示。这些牛按照编号的大小形成了一个链表。现在农场主人想删除链表中比前后结点值都大的牛的编号,你能帮他设计一个算法来实现这个功能吗?注意,只考虑删除前,首尾的牛的编号不删除。
题地址
示例1
输入:
{1,3,2,4,5}
返回值:
{1,2,4,5}
示例2
输入:
{5,4,3,2,1}
返回值:
{5,4,3,2,1}
备注:
链表长度[0, 10000]
0 < Node.val <= 10000
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 node = head;
ListNode pre=node,tail;
if(node!=null && node.next!=null){
pre = node;
node = node.next;
tail = node.next;
}else return node;
while(tail!=null){
if(pre.val < node.val && tail.val < node.val){
pre.next = tail;
}else{
pre = pre.next;
}
node = node.next;
tail = tail.next;
}
return head;
}
}