牛客网——打印极值点下标

题目描述

在一个整数数组上,对于下标为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(" "))
        );
    }
}

 

posted @ 2018-12-27 22:03  JAYPARK01  阅读(310)  评论(0编辑  收藏  举报