【华为OD机试考生抽中题 B卷】统计监控、需要打开多少监控器,用 C 编码,速通

这是一篇关于华为OD机试B卷的题解,主要涉及统计在长方形停车场中,根据车辆分布确定最少需要开启的监控器数量。题目要求根据车辆的1或0分布,计算监控覆盖所有车位所需的最小监控器数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【华为OD机试考生抽中题】静态扫描最优成本,用 C 编码,速通

最近更新的博客

本篇华为 OD 题解(B 卷):统计监控、需要打开多少监控器

题目描述

在一长方形停车场内,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开,给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器。
本篇华为 OD 题解(B 卷):统计监控、需要打开多少监控器

输入

第一行输入 m m m

### LeetCode适用的编程语言 LeetCode 支持多种主流编程语言,包括但不限于 C/C++、Python 和 Java[^1]。这些语言各有特点,在不同的场景下可能表现出各自的优势。 #### Python 对于希望快速实现想法并专注于算法逻辑而非语法细节的学习者来说,Python 是一种理想的选择。其简洁明了的语法使得编写和理解代码变得容易许多。此外,丰富的内置函数库也极大地提高了开发效率[^2]。 ```python def twoSum(nums, target): hashmap = {} for i in range(len(nums)): complement = target - nums[i] if complement in hashmap: return [hashmap[complement], i] hashmap[nums[i]] = i ``` #### C++ 当追求极致性能时,C++ 成为了不二之选。它允许程序员更精细地控制内存分配与管理,并且拥有强大的模板机制来构建高效的数据结构。STL(Standard Template Library)中的容器类如 vector 或 map 可以为常见操作提供优化后的解决方案。 ```cpp #include <vector> #include <unordered_map> std::vector<int> twoSum(std::vector<int>& nums, int target) { std::unordered_map<int, int> hash; for (int i = 0; i != nums.size(); ++i){ auto it = hash.find(target - nums[i]); if(it != hash.end()){ return {it->second,i}; } hash[nums[i]]=i; } } ``` #### Java 作为一种广泛应用于企业级应用开发的语言,Java 的优势在于跨平台性和庞大的社区资源支持。JDK 提供的标准库同样强大而全面,能够满足大多数日常编码需求。更重要的是,由于大量互联网公司采用 Java 技术栈,因此掌握该语言有助于更好地适应实际工作环境。 ```java import java.util.HashMap; public class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> map=new HashMap<>(); for(int i=0;i<nums.length;++i){ Integer j=map.get(target-nums[i]); if(j!=null)return new int[]{j,i}; map.put(nums[i],i); } throw new IllegalArgumentException("No two sum solution"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值