当前位置: 首页 > 面试经验 >

山峰个数 - 华为OD统一考试

优质
小牛编辑
157浏览
2023-12-19

山峰个数 - 华为OD统一考试

OD统一考试

分值: 100分

题解: Java / Python / C++

题目描述

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

输入描述

一个整数数组

输出描述

输出符合条件的山峰的个数

示例1

输入:
[0,1,2,3,2,4]

输出:
2

示例2

输入:
[3,0,3,4,1]

输出:
2

题解

简单模拟题。

解题思路

  1. 使用一个计数器cnt记录符合条件的山峰数量。
  2. 遍历数组,对于每个位置,判断是否满足山峰条件,即左右两侧的海拔均小于自身。
  3. 如果满足条件,则增加计数器cnt
  4. 最终返回cnt作为结果。

C++

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int validMountainCount(vector<int>& arr) {
        int n = arr.size(), cnt = 0;
        for(int i = 0; i < n; i++) {
            // 左右海拔均小于自己的海拔时
            if((i == 0 || arr[i-1] < arr[i]) && (i + 1 == n || arr[i] > arr[i+1])) cnt++;
        }

        return cnt;
    }
};

int main() {
    Solution solution;
    vector<int> arr1{0,1,2,3,2,4};
    cout<< solution.validMountainCount(arr1) <<endl;

    vector<int> arr2{3,0,3,4,1};
    cout<< solution.validMountainCount(arr2) <<endl;

    return 0;
}

Java

public class Solution {
    public int validMountainCount(int[] arr) {
        int n = arr.length;
        int cnt = 0;

        for (int i = 0; i < n; i++) {
            // 左右海拔均小于自己的海拔时
            if ((i == 0 || arr[i - 1] < arr[i]) && (i + 1 == n || arr[i] > arr[i + 1])) {
                cnt++;
            }
        }

        return cnt;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();

        int[] arr1 = {0, 1, 2, 3, 2, 4};
        System.out.println(solution.validMountainCount(arr1));

        int[] arr2 = {3, 0, 3, 4, 1};
        System.out.println(solution.validMountainCount(arr2));
    }
}

Python

from typing import List


class Solution:
    def validMountainCount(self, arr: List[int]) -> int:
        n, cnt = len(arr), 0
        for i in range(n):
            # 左右海拔均小于自己的海拔时
            if (i == 0 or arr[i - 1] < arr[i]) and (i + 1 == n or arr[i] > arr[i + 1]):
                cnt += 1
        return cnt


# 示例用法
solution = Solution()
arr1 = [0, 1, 2, 3, 2, 4]
print(solution.validMountainCount(arr1))

arr2 = [3, 0, 3, 4, 1]
print(solution.validMountainCount(arr2))

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。

#校招##秋招##面经##华为##java#
 类似资料: