A94871.得到山形数组的最少删除次数

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

我们定义数组 aa山形数组 当且仅当它满足以下条件:

  1. 数组长度 n3n \ge 3
  2. 存在某个下标 ii0<i<n10 < i < n - 1),使得:

    a0<a1<<ai1<aia_0 < a_1 < \dots < a_{i - 1} < a_i

    ai>ai+1>>an1a_i > a_{i + 1} > \dots > a_{n - 1}

换句话说,山形数组的元素先严格递增,达到一个峰值后,再严格递减。

现在给你一个整数数组 aa,请你返回将 aa 变成 山形数组 所需的 最少 删除次数。

题目保证 aa 在删除一些元素后,一定能得到一个山形数组。

输入格式

第一行包含一个整数 nn,表示数组 aa 的长度。
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,表示数组的元素。

输出格式

输出一个整数,表示最少删除次数。

输入输出样例

  • 输入#1

    3
    1 3 1

    输出#1

    0
  • 输入#2

    8
    2 1 1 5 6 2 3 1

    输出#2

    3

说明/提示

【样例解释 1】
数组 [1, 3, 1] 本身就是山形数组,所以不需要删除任何元素。

【样例解释 2】
一种可行的方法是将下标为 0,1 和 5 的元素删除,剩余元素为 [1, 5, 6, 3, 1],这是一个山形数组。
删除的元素为 2, 1, 2

【数据范围】

对于 100%100\% 的数据,满足:

  • 3n10003 \le n \le 1000
  • 1ai1091 \le a_i \le 10^9
  • 题目保证输入数据中一定存在合法的山形子序列。
首页