#9538. 支撑数

支撑数

版权信息

来源​: 自定义题目 ​题目名称​: 查找“支撑数”


任务总览表

任务名称 时间限制 内存限制 分数
查找“支撑数” 1000ms 16MiB 10 points

题目描述

在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?


输入格式

  • 第一行是整数 ​m​,表示输入的整数个数(3 ≤ m ≤ 100)。
  • 第二行是 m 个整数,表示输入的数列。

输出格式

  • 输出若干个支撑数,每行一个。

样例输入

14
1 3 2 4 1 5 3 9 7 10 8 23 85 43

样例输出

3
4
5
9
10
85

提示

  • 支撑数​:一个数是支撑数当且仅当它比其左右相邻的两个数都大。即对于数列中的任意元素 ​**a[i]​(2 ≤ i ≤ m-1),若 ​a[i-1] < a[i] > a[i+1]**​,则该数是一个支撑数。

题目分析

目标

  • 给定一组整数,找到所有的支撑数并输出。

思路

  • 遍历数列中的每个元素,从第二个到倒数第二个元素,检查是否比其左右相邻的数大。如果满足条件,则该元素为支撑数。
  • 输出所有满足条件的支撑数。

解法

  1. 遍历数列​:从第二个元素到倒数第二个元素,判断每个元素是否为支撑数。
  2. 判断条件​:对于每个元素 ​**a[i]​,如果 ​a[i-1] < a[i] > a[i+1]**​,则它是一个支撑数。
  3. 输出​:将所有支撑数逐行输出。

时间复杂度分析

  • 遍历一次数列的时间复杂度为 ​O(m)​,其中 m 为数列的长度,最坏情况下 ​m = 100​,因此该方法在时间上是可行的。

结论

通过遍历数列并判断每个元素是否为支撑数,可以有效地解决此问题,时间复杂度为 ​**O(m)**​。