- 博客(294)
- 收藏
- 关注
原创 华为OD机试 - 阿里巴巴找黄金宝箱(V) - 滑动窗口(Java 2024 E卷 100分)
核心要点:滑动窗口高效计算固定长度子数组和的最大值。解题关键:通过前一个窗口和递推当前窗口和,避免重复计算。优化方向:直接遍历输入字符串可节省空间(需处理负数)。适用性:适用于任何需要固定长度子数组统计的问题。
2025-04-01 22:14:38
687
原创 华为OD机试 - 寻找连续区间 - 滑动窗口(Java 2024 E卷 100分)
核心要点:统计所有连续子数组的和大于等于给定值的个数,关键在于高效计算。解题关键:滑动窗口算法能够在 ( O(N) ) 时间内解决问题,避免了暴力枚举的高时间复杂度。优化方向:滑动窗口的移动方式确保了每个元素最多被处理两次,保证了线性时间复杂度。适用性:适用于处理连续子数组和的问题,尤其是当数组元素为正数时,滑动窗口非常高效。
2025-04-01 21:11:42
469
原创 华为OD机试 - 王者荣耀匹配机制 - 回溯(Java 2024 D卷 200分)
核心要点:将10个评分分成两组,每组5人,使得两组总评分差最小。解题关键:使用回溯法生成所有可能的5人组合,计算总评分差的最小值。优化方向:对于更大的输入规模,可以考虑动态规划或剪枝优化,但本题输入规模固定为10,回溯法足够高效。适用性:适用于固定规模的分组问题,但对于更大规模的问题,需要更高效的算法。
2025-03-30 21:12:14
983
原创 华为OD机试 - 基站维护工程师数 - 动态规划(Java 2024 E卷 200分)
核心要点:这是一个典型的旅行商问题,需要找到最短的哈密尔顿回路。解题关键:暴力枚举所有可能的路径排列,计算总距离并取最小值。优化方向:对于更大的n,可以考虑动态规划或启发式算法(如遗传算法、模拟退火)来优化时间复杂度。适用性:适用于小规模问题(n < 10),但对于大规模问题需要更高效的算法。
2025-03-27 14:06:58
177
原创 华为OD机试 - 核酸最快检测效率 - 动态规划、背包问题(Java 2024 E卷 200分)
核心要点:资源分配问题,需要平衡志愿者分配与效率提升的关系解题关键:将问题转化为动态规划问题,明确状态转移方程优化方向:可以优化空间复杂度,使用滚动数组减少空间使用适用性:类似资源分配最大化收益的问题均可采用此方法局限性:当志愿者数量非常大时,可能需要更优化的算法。
2025-03-24 21:17:35
122
原创 华为OD机试-绘图机器-双指针(Java 2025 A卷 100分)
通过遍历指令列表并计算每个矩形的面积,我们可以有效地计算出绘制的图形面积。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 17:30:15
69
原创 华为OD机试 - 猜字谜 - 双指针(Java 2024 E卷 100分)
通过排序和去重操作,我们可以有效地匹配谜面单词和谜底库中的单词。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 17:27:41
33
原创 华为OD机试-租车骑绿道-双指针(Java 2023 B卷 100分)
通过排序和双指针技巧,我们可以有效地计算出所需的最小双人自行车数量。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 17:25:17
29
原创 华为OD机试 - 字符串序列判定 - 双指针(Java 2024 E卷 100分)
通过遍历字符串 ( b ) 并与字符串 ( a ) 进行匹配,我们可以有效地找到 ( a ) 是否是 ( b ) 的有效子串,并返回最后一个有效字符的位置。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 17:20:46
32
原创 华为OD机试-阿里巴巴找黄金宝箱(I)-双指针(Java 2023 B卷 100分)
通过计算总和并遍历数组,我们可以有效地找到第一个满足条件的黄金宝箱。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 17:06:39
25
原创 华为OD机试-IPv4地址转换成整数(Java 2024 B卷 100分)
通过验证输入格式和每小节的范围,我们可以将合法的虚拟 IPv4 地址转换为 32 位整数。对于非法输入,返回invalid IP。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 17:01:20
25
原创 华为OD机试-会议室占用时间段(Java 2024 C卷 100分)
通过排序和合并重叠的会议时间段,我们可以有效地计算会议室的占用时间段。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 16:59:57
63
原创 华为OD机试-围棋的气-数组(Java 2024 D卷 100分)
通过记录棋子的位置并检查其相邻点,我们可以有效地计算黑棋和白棋的气数。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 16:56:42
23
原创 华为OD机试-整型数组按个位值排序 - 数组(Java 2024 D卷 100分)
通过提取每个元素的十进制最低位并进行稳定排序,我们可以有效地解决这个问题。不同语言的实现方式略有不同,但核心思路一致。
2025-03-20 16:54:12
15
原创 华为OD机试-最低位排序 - 数组(Java 2024 E卷 100分)
通过遍历信号字符串并检查每个可能的子串是否满足完全连续交替的条件,我们可以有效地找到最长的完全连续交替方波信号。这种方法在时间和空间上都是高效的。
2025-03-20 16:41:25
20
原创 华为OD机试 - 最多获得的短信条数 - 动态规划(Java 2023 B卷 100分)
这个问题是一个典型的完全背包问题,通过动态规划可以有效地解决。我们通过构建一个dp数组来存储每个预算下的最大短信条数,并通过遍历每种充值方式来更新这个数组。最终,dp[M]即为所求的最大短信条数。这个算法的时间复杂度和空间复杂度都在可接受范围内,适用于给定的约束条件。
2025-03-20 13:39:26
16
原创 华为OD机试 - 最长回文字符串 - 贪心算法(Java 2024 E卷 100分)
这个问题的核心在于如何有效地统计字符频率并构造回文串。通过统计字符的出现次数,我们可以确定哪些字符可以用于构造回文串的左半部分和右半部分,以及选择哪个字符作为中间字符。为了确保字典序最小,我们在选择中间字符时优先选择字典序较小的字符。这个算法的时间复杂度和空间复杂度都较低,适用于处理较长的字符串。
2025-03-18 14:02:00
164
原创 华为OD机试专栏:高效刷题指南与全题库解析
为了更好地帮助想进入华为OD的小伙伴提升刷题效率,特地开设此专栏,此专栏的题库会在短时间内陆续更新,将会尽可能地包含所有华为OD题库,包含Java、Python、C++、JavaScript题解语言。欢迎大家一起来高效刷算法,祝愿大家都能机考通过。
2025-03-18 12:51:23
23
原创 当前有哪些学习资料可以帮助我学习整机性能方面的知识吗
学习整机性能方面的知识需要理论与实践相结合。通过阅读经典书籍、参加在线课程、使用性能分析工具以及参与社区讨论,你可以逐步掌握硬件、操作系统和应用程序的性能优化技术。同时,通过实际项目和实验,将理论知识应用到实践中,进一步提升技能。学习整机性能方面的知识需要结合硬件、操作系统、性能优化和调试工具等多个领域的知识。
2025-03-18 12:39:45
647
原创 在制作电脑的过程中,如何区分整机性能问题和应用自身性能问题
应用自身性能问题通常与特定应用程序的代码优化、资源管理或兼容性相关,表现为只有该应用程序运行缓慢或异常,而其他应用程序和系统运行正常。整机性能问题通常与硬件、操作系统或系统配置相关,表现为整个系统的性能下降,影响所有应用程序的运行。这两类问题的表现可能相似(如卡顿、响应慢等),但原因和解决方法完全不同。在制作电脑的过程中,区分。
2025-03-18 12:37:02
816
原创 华为OD机试 - 创建二叉树(Java 2024 E卷 200分)
本题是一个树结构的构建和查询问题,核心在于根据高度和索引的规则插入节点,并通过层次遍历查询目标节点。插入规则:高度决定插入方向,相同高度优先左子树。查询效率:通过层次遍历查找目标节点。边界处理:处理null查询和未找到节点的情况。该算法适用于动态构建树并查询的场景,但在树退化为链时效率较低。可能的优化方向包括使用平衡树(如 AVL 树或红黑树)来降低树高,从而将时间复杂度优化到 O(Q * log Q)。在实际应用中,例如文件系统或组织结构管理,可以用类似方法动态构建和查询树结构。
2025-03-17 22:32:32
890
原创 华为OD机试 - 德州扑克 - 逻辑分析(Java 2023 B卷 200分)
本题是一个经典的扑克牌型判断问题,核心在于牌面和花色的分离、频率统计以及连续性检查。牌面映射:将 J、Q、K、A 映射为数值,方便比较和排序。特殊顺子:处理 A、2、3、4、5 的特殊情况。优先级:按照牌型定义的优先级(同花顺 > 四条 > 葫芦 > 同花 > 顺子 > 三条)依次判断。该算法适用于固定五张牌的场景,时间和空间复杂度均为常数,效率较高。在实际应用中,例如扑克游戏中,可以扩展到处理更多牌型(如两对、一对)或动态牌数场景。
2025-03-17 22:26:38
71
原创 华为OD机试 - 书籍叠放 - 逻辑分析(Java 2023 B卷 200分)
我们使用了排序和动态规划来解决这个问题。首先对书籍进行排序,然后使用二分查找来优化动态规划的过程。这种方法能够有效地找到最长的书籍叠放序列。
2025-03-17 22:08:03
409
原创 华为OD机试 - 九宫格按键输入 - 逻辑分析(Java 2023 B卷 200分)
我们使用了状态机来处理这个问题,通过维护当前模式和按键的连续按击次数,能够有效地生成相应的输出。这种方法简单直观,适用于处理这种模式切换和按键映射的问题。
2025-03-17 22:05:05
506
原创 华为OD机试 - 仿LISP运算 - 逻辑分析(Java 2023 B卷 200分)
我们使用了递归下降解析法来解决这个问题。这种方法通过递归地解析嵌套的表达式,能够有效地处理LISPQ语言的语法结构。通过这种方法,我们可以确保在解析和计算过程中,所有的括号和操作符都能被正确处理。
2025-03-17 22:00:47
82
原创 华为OD机试 - 导师请吃火锅(Java 2023 B卷 200分)
通过贪心算法,我们可以有效地解决这个问题。首先计算每道菜的合适时间,然后按合适时间排序,最后选择符合条件的菜品。这种方法的时间复杂度为O(n log n),适用于n <= 1000的规模。
2025-03-17 21:56:01
348
原创 华为OD机试 - 计算观看演唱会场次(Java 2023 B卷 200分)
通过贪心算法,我们可以有效地解决这个问题。首先计算每场演出的结束时间,然后按结束时间排序,最后选择符合条件的演出。这种方法的时间复杂度为O(n log n),适用于N <= 1000的规模。
2025-03-17 21:52:29
381
原创 华为OD机试 - 最长的完全交替连续方波信号(Java 2023 B卷 200分)
通过遍历输入信号并检查每个可能的子串,我们可以找到最长的完全连续交替方波信号。这种方法的时间复杂度为O(n^2),适用于输入长度在1024以内的信号。
2025-03-17 21:48:48
125
原创 HDC 和 HiLog 命令详细介绍
HDC 是鸿蒙系统的设备调试工具,类似于 Android 的 ADB。它提供了丰富的命令行工具,用于设备连接、调试、日志查看和性能监控等。HiLog 是鸿蒙系统的日志系统,开发者可以通过 HiLog API 打印日志,并通过命令行工具查看日志。通过 HDC 和 HiLog 工具,开发者可以方便地调试鸿蒙应用程序,查看日志并分析性能问题。在代码中使用 HiLog API 打印日志时,可以指定日志标签(Tag)。的详细介绍,分别列出它们的命令和功能。过滤指定标签的日志。
2025-03-17 18:17:08
703
原创 华为OD机试- K优雅子数组(Java 2024 E卷 100分)
关键点:通过哈希表动态维护子数组元素频率,避免重复计算。优化方向:对于更大数据量,可探索滑动窗口或频率剪枝策略。适用场景:适用于面试场景下对基础暴力解法的考察。
2025-03-16 14:36:36
31
原创 华为OD机试-ABR 车路协同场景(Java 2023 B卷 100分)
通过遍历序列 A 和 B,我们可以有效地找到满足条件的(Ai, Bj)数对。这种方法在时间和空间上都是高效的。
2025-03-14 18:48:07
42
原创 华为OD机试-篮球游戏(Java 2024 D卷 100分)
这个问题通过模拟篮球的放入和取出过程,使用双端队列来高效地解决问题。通过检查每个篮球的取出方向,可以确定是否能够按照给定的顺序取出篮球。
2025-03-14 14:03:10
278
原创 StringJoiner 详解
是Java 8引入的一个工具类,位于java.util包中。它的主要作用是将多个字符串按照指定的分隔符拼接起来,并可以指定前缀和后缀。是Java 8中一个非常实用的工具类,特别适合处理需要分隔符、前缀和后缀的字符串拼接场景。它的设计简洁、易用,能够显著提高代码的可读性和可维护性。然而,在需要处理复杂字符串操作或高性能要求的场景中,或可能是更好的选择。希望本文能帮助你更好地理解和使用。如果有任何问题,欢迎留言讨论!
2025-03-13 18:32:05
705
原创 Java字符串类型String、StringBuilder、StringBuffer详解
String是Java中最常用的字符串类,表示一个不可变的字符序列。一旦创建,String对象的内容就不能被修改。是一个可变的字符序列,用于高效地进行字符串操作。它不保证线程安全,但在单线程环境下性能优越。与类似,也是一个可变的字符序列,但它是线程安全的。String:不可变,线程安全,适合存储常量字符串。:可变,非线程安全,性能高,适合单线程环境。:可变,线程安全,性能略低,适合多线程环境。在实际开发中,应根据具体需求选择合适的字符串处理类。如果不需要考虑线程安全,优先使用;
2025-03-13 18:28:29
830
原创 ArrayDeque 介绍
ArrayDeque是 Java 集合框架中的一个类,实现了Deque接口。它是一个基于动态数组的双端队列(Double Ended Queue),支持在队列的两端高效地添加和移除元素。ArrayDeque没有容量限制(除非受到系统资源限制),并且是非线程安全的。ArrayDequeLinkedListArrayDequeArrayDequeArrayDequenullStackQueueDequeArrayDeque实现了Deque。
2025-03-13 13:17:29
1005
原创 华为OD机试-羊、狼、农夫过河-逻辑分析(Java 2024 E卷 100分)
通过使用广度优先搜索(BFS)模拟运输过程,我们可以有效地找到在不损失羊的情况下将全部羊和狼运到对岸需要的最小次数。这种方法在时间和空间上都是高效的。
2025-03-12 15:43:34
31
原创 华为OD机试-求字符串中所有整数的最小和-逻辑分析(Java 2023 B卷 100分)
通过逐个字符遍历字符串并提取整数,我们可以有效地计算字符串中所有整数的最小和。这种方法在时间和空间上都是高效的。
2025-03-12 15:39:12
44
原创 华为OD机试-AI面板识别(Java 2023 B卷 100分)
通过计算灯的中心y坐标并按照规则排序,我们可以有效地对指示灯进行排序。这种方法在时间和空间上都是高效的。
2025-03-12 15:30:48
31
原创 华为OD机试-异常的打卡记录(Java 2024 C卷 100分)
通过排序序列并模拟电梯操作,我们可以有效地找到达到或接近目标楼层的序列组合。这种方法在时间和空间上都是高效的。
2025-03-12 15:26:37
20
原创 华为OD机试-乘坐保密电梯-回溯(Java 2024 C卷 200分)
通过排序序列并模拟电梯操作,我们可以有效地找到达到或接近目标楼层的序列组合。这种方法在时间和空间上都是高效的。
2025-03-12 15:20:18
26
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人