攀登者1 - 华为OD统一考试

news/2024/7/20 16:21:32 标签: 华为od, java, 算法, python, c++, 面试

OD统一考试

分值: 100分

题解: Java / Python / C++

alt

题目描述

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

地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素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。

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

image-20240104103125507

输入描述

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

输出描述

输出地图中山峰的数量。

示例1

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

输出:
3

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

题解

简单模拟题。

解题思路

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

Java

java">import java.util.Arrays;
import java.util.Scanner;
/**
 * @author code5bug
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int[] heights = Arrays.stream(scanner.nextLine().split(","))
                               .mapToInt(Integer::parseInt)
                               .toArray();

        int n = heights.length;
        int cnt = 0;

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

        System.out.println(cnt);
    }
}

Python

python">heights = list(map(int, input().split(",")))

n, cnt = len(heights), 0
for i in range(n):
    # 左右海拔均小于自己的海拔时
    if (i == 0 or heights[i - 1] < heights[i]) and (i + 1 == n or heights[i] > heights[i + 1]):
        cnt += 1
print(cnt)

C++

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> heights;
    int height;
    while(cin >> height) {
        heights.push_back(height);
        if(cin.peek() == ',') cin.ignore();
        else break;
    }

    int n = heights.size(), cnt = 0;
    for(int i=0; i<n; i++) {
        if((i == 0 || heights[i-1] < heights[i]) && (i + 1 == n || heights[i] > heights[i+1])) cnt++;
    }

    cout << cnt << endl;

    return 0;
}

相关练习题

题号题目难易
LeetCode 852852. 山脉数组的峰顶索引中等
LeetCode LCR 069LCR 069. 山脉数组的峰顶索引简单

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


http://www.niftyadmin.cn/n/5302900.html

相关文章

实验笔记之——Gaussian Splatting

之前博客对NeRF-SLAM进行了调研 学习笔记之——NeRF SLAM&#xff08;基于神经辐射场的SLAM&#xff09;-CSDN博客文章浏览阅读868次&#xff0c;点赞22次&#xff0c;收藏21次。NeRF 所做的任务是 Novel View Synthesis&#xff08;新视角合成&#xff09;&#xff0c;即在若…

【计算机毕业设计】SSM健身房俱乐部管理系统

项目介绍 本项目包含前后台&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 登录,会员管理-增删改查,员工管理-增删改查,课程管理,网站新闻管理,新闻添加编辑,留言管…

Java中常见的设计模式及其实际应用

在软件开发中&#xff0c;设计模式是重要的指导原则&#xff0c;它们提供了解决特定问题的可重用方案。Java作为一种强大的编程语言&#xff0c;广泛应用了许多设计模式。让我们深入探讨几种常见的设计模式&#xff0c;并展示它们在实际Java应用中的用例。 1. 单例模式 (Singl…

奋楫扬帆,奔赴新程 | 2023 年图扑大事记回顾,与您携手共迎 2024

2023.01 工信部公示了 2022 年度智能制造示范工厂揭榜单位和优秀场景名单。图扑软件和上海洲邦合作建设的宁波甬友数字孪生工厂被评为优秀场景&#xff0c;全国共有 369 个智能制造典型场景入选。 2023.01 在第十一届中国创新创业大赛全国赛&#xff08;新一代信息技术&#…

第三章 Qt5布局管理——3.3堆栈窗体QStackedWidget类

QStackedWidget 类提供了一个小部件堆栈&#xff0c;其中一次只看到一个小部件可见。 可以理解为切换窗口。 例子&#xff1a;当选择左侧列表框中不同的选项时&#xff0c;右侧显示所选的不同的窗体。列表框使用QListWiddget。效果图如下&#xff1a; #ifndef STACKDLG_H #de…

华为HCIE-Datacom课程介绍

厦门微思网络HCIE-Datacom课程介绍 一、认证简介 HCIE-Datacom&#xff08;Huawei Certified ICT Expert-Datacom&#xff09;认证是华为认证体系中的顶级认证&#xff0c;HCIE-Datacom认证定位具备坚实的企业网络跨场景融合解决方案理论知识&#xff0c;能够使用华为数通产品…

iOS手机查看蓝牙底层日志

文章目录 一、需要的环境二、在iOS设备上安装Profiles文件三、安装Xcode四、安装packetLogger五、启动蓝牙数据包分析 参考文档&#xff1a;A New Way to Debug iOS Bluetooth Applications 一、需要的环境 iOS 13 device and cableMac computer/laptopApple Developer Progr…

SpringBoot实现Websocket聊天交友微信小程序(一)

记录一下我开发一个交友微信小程序并且上线运营的心得体会。 2022年10月1日上线的&#xff0c;到目前终于实现每天收益300左右。 界面比较简洁&#xff0c;功能有动态&#xff0c;动态可以选择话题&#xff0c;相册&#xff0c;相册可以设置看广告解锁&#xff0c;私信&#…