自学内容网 自学内容网

华为OD机试2024年C卷D卷 - 山脉的个数/攀登者1 (Java)

华为OD机试(C卷+D卷)2024真题目录

题目描述

攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。

地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。

例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,10,11,12,13,最高峰高度分别为 4,3。最高峰位置分别为3,10。

一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。

在这里插入图片描述

输入描述

输入为一个整型数组,数组长度大于1。

输出描述

输出地图中山峰的数量。

示例输入1

0, 1, 2, 3, 2, 4

示例输出1

2

示例输入2

0,1,4,3,1,0,0,1,2,3,1,2,1,0

示例输出2

3

示例2说明: 山峰所在索引分别为3,10,12

解题思路
本题考试时为leetcode同样的核心代码模式,非ACM模式,即无需自己解析输入数据。

只要大于相邻的左右数值,则是山峰,遍历数组,找出满足山峰条件的个数

public class Solution {

  // 算法实现(本题实际考试为核心代码模式,因此考试时只需要写出此函数实现即可)
  public static int countPeaks(int[] heights) {
    int peakCount = 0;

    for (int i = 0; i < heights.length; i++) {
      int leftHeight = i - 1 >= 0 ? heights[i - 1] : 0;
      int rightHeight = i + 1 < heights.length ? heights[i + 1] : 0;

      if (heights[i] > leftHeight && heights[i] > rightHeight) {
        peakCount++;
      }
    }

    return peakCount;
  }
}


原文地址:https://blog.csdn.net/hrr397117313/article/details/140578020

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!