时间:2021/03/08
一.题目描述
在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数, 或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。
输入描述
第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。
输出描述
每个案例输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。
题目链接
二.算法
题解
使用int数组存储读取的数据。然后通过与相邻数据进行比较来判断是否为极值。这里要注意第一个和最后一个数据的判断,因为它们只有一个相邻数据,所以当它们与那个数字不相等时就是极值。
代码
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ //读取输入 int n = in.nextInt(); int[] num = new int[n]; for(int i = 0; i < n; i++){ num[i] = in.nextInt(); } //求极值点并打印 if(num[0] != num[1]){ System.out.print(0 + " "); } for(int i = 1; i < n - 1; i++){ if(num[i] > num[i - 1] && num[i] > num[i + 1]){ System.out.print(i + " "); }else if(num[i] < num[i - 1] && num[i] < num[i + 1]){ System.out.print(i + " "); } } if(num[n - 2] != num[n - 1]){ System.out.print(n - 1); } System.out.println(); } } }