牛客网——打印极值点下标
题目描述
在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数, 或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。
输入描述:
第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。
输出描述:
每个案例输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。
链接:https://www.nowcoder.com/questionTerminal/7fd72f8ac7964ba3b8baa8735246e1f1 来源:牛客网 import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Scanner reader = new Scanner(System.in); int k = reader.nextInt(); int[] A = new int[k]; for (int i = 0; i < k; ++i) { A[i] = reader.nextInt(); } ArrayList<Integer> index = new ArrayList<>(); for (int i = 1; i < A.length-1; ++i) { if (A[i] > A[i-1] && A[i] > A[i+1]) { index.add(i); } else if (A[i] < A[i-1] && A[i] < A[i+1]) { index.add(i); } } if (A[0] != A[1]) { index.add(0); } if (A[A.length-1] != A[A.length-2]) { index.add(A.length-1); } Collections.sort(index); System.out.println( index.stream() .map((x) -> String.valueOf(x)) .collect(Collectors.joining(" ")) ); } }