java的谷值问题(整个人都 (回口回))

要求:输入数组长度n,并输入n个数,统计数组中的谷值个数。(一个数若小于相邻的数则称为数组的谷值,若没有相邻的值也算谷值)
(我真的不理解要怎么下手,(ㄒoㄒ) )
谢谢有缘人来回答(^ω^)

①输入数组长度n,并输入n个数
②两层for循环 遍历数组 比较a[i]与a[i-1]和a[i+1]的如果小于任何一个就统计+1
第一个和最后一个做特殊处理,只需比较后一个和前一个就可以了。
③输出统计的谷值个数

希望对题主有所帮助!可以的话,帮忙点个采纳!


import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //输入n
        int n = scanner.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            //输入n个数
            a[i] = scanner.nextInt();
        }
        //谷值个数
        int sum = 0;

        for (int i = 0; i < n; i++) {
            if (n == 1) {
                //只有一个值,谷值个数为1
                sum++;
            } else if (i == 0) {
                //第一个只需和后面的比较
                if (a[i] < a[i + 1]) {
                    sum++;
                    //这里出现谷值的话,下一个点就不可能是谷值,可以直接跳过
                    i++;
                }
            } else if (i == n - 1) {
                //最后一个只需和前面的比较
                if (a[i] < a[i - 1]) {
                    sum++;
                    //因为已经到了最后一个,直接写不写 i++; 都无所谓
                }
            } else {
                if (a[i] < a[i - 1] && a[i] < a[i + 1]) {
                    sum++;
                    //这里出现谷值的话,下一个点就不可能是谷值,可以直接跳过
                    i++;
                }
            }
        }

        System.out.println("谷值个数为" + sum);
    }
}

让余xj讲呗


public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int length = input.nextInt();
        int[] nums = new int[length];
        for (int i = 0; i < nums.length; i++) {
            nums[i] = input.nextInt();
        }
        int num = 0;    // 统计数量
        for (int i = 0; i < nums.length-1; i++) {
            if (i==0) { //第一位
                if (nums[i]<nums[i+1]) {    
                    num++;
                }
            } else if (i==nums.length) {    //最后一位
                if (nums[nums.length-1]<nums[nums.length-2]) {
                    num++;
                }
            } else {
                if (nums[i]<nums[i-1]&&nums[i]<nums[i+1]) {
                    num++;
                }
            }
        }
        System.out.println(num);
    }