每个案例第一行为此数组元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔
每个案例输出为n个数字(其中n为该案例中极值点的个数):每个数字对应相应数组的相应极值点下标值,下标值之间用空格分隔。
10 10 12 12 11 11 12 23 24 12 12 15 12 12 122 112 222 211 222 221 76 36 31 234 256 76 76 15 12 14 122 112 222 222 222 221 76 36 31 234 256 76 73
0 7 2 3 4 5 6 10 12 0 2 3 10 12 14
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ int n = scanner.nextInt(); int[] a = new int[n]; for (int i = 0; i <n ; i++) a[i]= scanner.nextInt(); System.out.print(0+" "); for (int i = 1; i < n-1; i++) if ((a[i]<a[i-1]&&a[i]<a[i+1])||(a[i]>a[i-1]&&a[i]>a[i+1])) System.out.print(i+" "); System.out.println(n-1); } } }
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(" ")) ); } }