【华为机试】2024年真题C卷(java)-山脉的个数

【华为机试】2024年真题C卷汇总(java)

 一、题目

题目描述:

给定一个数组,数组中的每个元素代表该位置的海拔高度。0表示平地,>=1时表示属于某个山峰,山峰的定义为当某个位置的左右海拔均小于自己的海拔时,该位置为山峰。数组起始位置计算时可只满足一边的条件。

二、输入输出

输入描述:
一个整数数组
输出描述:
输出符合条件的山峰的个数

三、示例

示例1:
输入:
[0,1,2,3,2,4]
输出:
2
示例2:
输入:
[3,0,3,4,1]
输出:
2

【华为机试】2024年真题C卷(java)-山脉的个数_第1张图片

四、解题思路

直接暴力的遍历每个数组元素,判断每个位置与其左右位置的高度关系。

五、参考代码

/*
 * @#coding: utf-8
 * @Author: mgc
 * @Date: 2024-02-02 17:47:00
 * @LastEditors: Do not edit
 * @LastEditTime: 2024-02-02 17:48:55
 */

// import java.util.*;
// import java.util.HashMap;
// import java.util.Scanner;
// import java.util.regex.Matcher;
// import java.util.stream.Stream;
// import java.util.regex.Pattern;
// import java.util.stream.Collectors;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // 输入,此处仅为测试,考试时为leetcode模式
        Scanner in = new Scanner(System.in);
        String inputStr = in.nextLine();

        // 去除方括号
        inputStr = inputStr.replace("[", "").replace("]", "");

        String[] tmpArray = inputStr.split(",");
        int[] nums = new int[tmpArray.length];
        for (int i = 0; i < tmpArray.length; i++) {
            nums[i] = Integer.parseInt(tmpArray[i]);
        }
        System.out.println(countValidMountains(nums));
    }

    /**
     * 计算符合条件的山峰的个数
     * @param arr 整数数组
     * @return 符合条件的山峰的个数
     */
    public static int countValidMountains(int[] arr) {
        int count = 0;
        int i = 0;
        int arrLen = arr.length;
        while (true) {
            if (i >= arrLen) {
                return count;
            } else {
                // 左边界
                if (i == 0) {
                    if (arr[i + 1] < arr[i]) {
                        count += 1;
                    }
                } else if (i == arrLen - 1) {
                    if (arr[i - 1] < arr[i]) {
                        count += 1;
                    }
                } else {
                    if (arr[i - 1] < arr[i] && arr[i + 1] < arr[i]) {
                        count += 1;
                    }
                }
            }
            i += 1;
        }
    }
}

你可能感兴趣的:(华为,java,华为od,算法,华为机试,山脉的个数)