当前位置: 首页 > news >正文

(100分)- 攀登者1(Java JS Python C)

(100分)- 攀登者1(Java & JS & Python & C)

题目描述

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

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

输出描述

输出地图中山峰的数量。

用例
输入0,1,4,3,1,0,0,1,2,3,1,2,1,0
输出3
说明山峰所在索引分别为3,10,12
题目解析

本题采用核心代码模式进行考核,无需自行处理输入数据解析。

虽然代码展示仍以ACM模式呈现,但已明确区分输入处理与算法逻辑部分,方便考生直接关注核心算法实现。

本题算法思路较为直观,建议直接阅读代码实现部分即可掌握。

JS算法源码
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; // 输入处理 void (async function () { const heights = (await readline()).split(",").map(Number); console.log(getResult(heights)); })(); // 算法实现(本题实际考试为核心代码模式,因此考试时只需要写出此函数实现即可) function getResult(heights) { let count = 0; for (let i = 0; i < heights.length; i++) { const leftHeight = i - 1 >= 0 ? heights[i - 1] : 0; const rightHeight = i + 1 < heights.length ? heights[i + 1] : 0; if (heights[i] > leftHeight && heights[i] > rightHeight) { count++; } } return count; }
Java算法源码
import java.util.Arrays; import java.util.Scanner; public class Main { // 输入处理 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] heights = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray(); System.out.println(getResult(heights)); } // 算法实现(本题实际考试为核心代码模式,因此考试时只需要写出此函数实现即可) public static int getResult(int[] heights) { int count = 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) { count++; } } return count; } }
Python算法源码
# 输入获取 heights = list(map(int, input().split(","))) # 算法入口(本题实际考试为核心代码模式,因此考试时只需要写出此函数实现即可) def getResult(h): count = 0 for i in range(len(h)): leftH = h[i - 1] if i - 1 >= 0 else 0 rightH = h[i + 1] if i + 1 < len(h) else 0 if h[i] > leftH and h[i] > rightH: count += 1 return count # 算法调用 print(getResult(heights))
C算法源码
#include <stdio.h> #define MAX_SIZE 100000 // 算法实现(本题实际考试为核心代码模式,因此考试时只需要写出此函数实现即可) int getResult(const int heights[], int heights_size) { int count = 0; for (int i = 0; i < heights_size; i++) { int leftHeight = i - 1 >= 0 ? heights[i - 1] : 0; int rightHeight = i + 1 < heights_size ? heights[i + 1] : 0; if (heights[i] > leftHeight && heights[i] > rightHeight) { count++; } } return count; } // 输入处理 int main() { int heights[MAX_SIZE]; int heights_size = 0; while (scanf("%d", &heights[heights_size++])) { if (getchar() != ',') break; } printf("%d\n", getResult(heights, heights_size)); return 0; }
http://www.jsqmd.com/news/459388/

相关文章:

  • OBS美颜设置在哪里打开?
  • 大模型落地应用:揭秘国内头部实践,抢占AI先机!
  • 高并发计数性能提升26倍!LongAdder如何用分段CAS颠覆AtomicLong?
  • 中科大少年班记(2026年3月)
  • Redis学习日志--不断学习,不断补充
  • 笔记:使用yaml文件进行K8s服务部署:资源控制器篇
  • 1.OAG(本体增强生成)技术研究学习笔记
  • What_s_New_in_PSCAD_X4__pscad说明书_DeepSeek翻译
  • 2026 年,海南注册公司代理机构 top10,“e 登记” 适配服务实力排名
  • 曾经神器又回来了?最新开源修复版,一键轻松OCR图片提取文字,支持翻译,完全免费 天若OCRV6.0
  • 腾视科技TS-SG-SM7系列AI算力模组:32TOPS算力引擎,开启边缘智能新纪
  • 2026 年,洋浦企业注册代办十佳,服务效率榜单,推荐哪些公司
  • 3p2w_tx_pscad说明书_DeepSeek翻译
  • 【ROS2】YDLidar X2的HELLO WORLD步骤总结
  • 高频-链表
  • 第十六届蓝桥杯大赛软件赛省赛Java 大学 B 组
  • 耳内EEG技术:便携性与信号质量的综合评估
  • 公司办公固定资产管理办法(框架草案)
  • 统计代码量
  • linux-内存相关
  • 第174章 第四卷中局 - 淬火成钢
  • 等保测评命令——华三(H3C)网络设备
  • Java 中 Set 集合
  • Nginx安全配置:隐藏版本号
  • Qt 数据库模块详解(从驱动编译到性能优化)
  • 2026年靠谱的防爆电伴热带品牌推荐:自限温电伴热带/工程用电伴热带/阻燃防爆电伴热带行业内口碑厂家推荐 - 行业平台推荐
  • 溯源过程
  • 阿里云购买服务器安装openclaw踩坑记录
  • 写了个页面分享此时此刻我在听的歌
  • 优选算法——分治(1):三路快排