【华为OD】C卷真题 100%通过:攀登者1 C/C++源码实现

news/2024/7/20 16:52:51 标签: 算法, leetcode, 数据结构, 华为od, c++, c语言, 开发语言

【华为OD】C卷真题 100%通过:攀登者1  C/C++源码实现

目录

题目描述:

示例1

代码实现:


题目描述:

攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。
地图表示为一维数组,数组的索引代表水平位置,数组的高度代表相对海拔高度。其中数组元素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。
一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。
                4
  
              +---+ 
              |   | 
              |   | 3                       3 
              |   | 
              |   +---+                   ----- 
              |       |                   |   | 
            2 |       |                 2 |   |     2 
              |       |                   |   | 
          +---+       |               ----+   |   +---+ 
          |           |               |       |   |   | 
        1 |           | 1           1 |       | 1 |   | 1 
          |           |               |       |   |   | 
      +---+           +---+       +---+       +---+   +---+ 
      |                   |       |                       | 
    0 |                   | 0   0 |                       | 0 
      |                   |       |                       | 
  +---+                   +-------+                       +---+ 
  
    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14
登山时会消耗登山者的体力(整数),上山时,消耗相邻高度差两倍的体力,下坡时消耗相邻高度差一倍的体力,平地不消耗体力,登山者体力消耗到零时会有生命危险。
例如,上图所示的山峰,从索引0,走到索引1,高度差为1,需要消耗2X1=2的体力,从索引2高度2走到高度4索引3需要消耗2X2=4的体力。如果是从索引3走到索引4则消耗1X1=1的体力。
登山者想要知道一张地图中有多少座山峰

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

[0,1,4,3,1,0,0,1,2,3,1,2,1,0]

输出

3

说明

山峰所在的索引分别为 2,10,12

代码实现:

class Solution {
public:
	/**
	    * 返回地图中山峰的数量
		* @param hill_map int整形vector 地图数据(长度大于1)
		* @return int整形
		*/
	int count_peaks(vector<int>& hill_map) {
		int count = 0;
		hill_map.push_back(0);
		hill_map.insert(hill_map.begin(), 0);
		int n = hill_map.size();
		for (int i = 1; i < n; ++i) {
			if (i + 1 < n) {
				if (hill_map[i] > hill_map[i + 1] && hill_map[i] > hill_map[i - 1]) {
					count++;
				}
			}
		}
		return count;
	}
};


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

相关文章

【第二部分:结构】ARM Realm Management Monitor specification

目录 概念Realm概述Realm执行环境Realm寄存器Realm内存Realm处理器功能IMPDEF系统寄存器 Realm属性Realm活性Realm生命周期状态状态转换 Realm参数Realm描述符 颗粒Granule颗粒属性颗粒所有权颗粒生命周期状态状态转换颗粒抹除 Realm执行上下文概述REC属性REC指数和MPIDR值REC生…

Composer update 跳过指定依赖

在使用Compose进PHP 依赖管理只时&#xff0c;有时候我们可能希望忽略版本批配&#xff0c;即使依赖项的景新版本已经发布&#xff0c;也然续使用当前的乐本。这种情况下&#xff0c;我们可以使用Composer的 --ignore-platform-reqs 选项来实现 可以使用--ignore-platform-req…

python+pytest接口自动化:接口测试

接口定义 一般我们所说的接口即API&#xff0c;那什么又是API呢&#xff0c;百度给的定义如下&#xff1a; API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的接口&#xff08;如函数、HTTP接口&#xff09;&#xff0c…

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

前言 我们在开发串口通信程序时,有时候会遇到比如单片机或者传感器发送的数据速度特别快,比如10ms、20ms发送一次,并且每次发送的数据量还比较大,如果按照常规的写法,我们会发现接收的数据还没处理完,新的数据又发送过来了,这就会导致处理数据滞后,软件始终处理的不是…

一文教你开启真人3D手办生意

真人手办定制是现代数字化技术结合文化创意视角而诞生的一种新型消费场景。在3D技术的辐射之下&#xff0c;真人3D手办生产与销售的是产销合一的数字化产品&#xff0c;想要实现这种精准消费的高效化、规模化&#xff0c;既需要专业技术也需要在线平台&#xff0c;一旦通路达成…

前端var、let、const有什么区别

var , let , 和 const 是 JavaScript 中用于声明变量的关键字&#xff0c;它们之间有一些区别&#xff1a; var &#xff1a;在ES5及之前的版本中使用的声明变量的关键字。它具有以下特点&#xff1a; 函数作用域&#xff1a; var 声明的变量的作用域是函数级的&#xff0c;它…

AlDente Pro v1.22.2(mac电池最大充电限制工具)

AlDente Pro是一款适用于Mac操作系统的小工具&#xff0c;可以帮助您限制电池充电量以延长电池寿命。通常情况下&#xff0c;电池在充满的状态下会继续接受电源充电&#xff0c;这可能会导致电池寿命缩短。使用AlDente Pro&#xff0c;您可以设置电池只充到特定的充电水平&…

虾皮插件:优化Shopee商家店铺运营的利器

在如今竞争激烈的电商市场中&#xff0c;如何提升Shopee商家店铺的运营效率和销售业绩成为了摆在每个商家面前的一道难题。然而&#xff0c;幸运的是&#xff0c;虾皮插件-知虾的出现为商家们带来了一种全新的解决方案。本文将介绍虾皮插件的用途和优势&#xff0c;并详细介绍其…