跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

华为 OD 机试动态规划与双指针算法实战

华为 OD 机试中动态规划与双指针是高频考点。以停车位问题为例,讲解如何通过左右两次遍历分别计算每个位置到最近车辆的距离,取两者较小值后再求最大值,从而找到最优停车点。该方法利用动态规划思想分解子问题,结合双指针技巧优化时间复杂度,适用于资源调度与路径规划等场景。

Eee_123发布于 2026/3/15更新于 2026/6/221 浏览

1. 动态规划与双指针在华为 OD 机试中的重要性

华为 OD 机试向来以算法题为核心考察点,其中动态规划和双指针算法出现的频率尤其高。就拿最近几场机试来说,'找车位'和'高效的任务规划'这两道动态规划题几乎成了必考题,而双指针也经常以各种变体形式出现。

为什么华为这么偏爱这两种算法?从实际开发场景来看,动态规划特别适合解决资源优化类问题,比如任务调度、路径规划等华为业务中的常见需求。而双指针在数据处理、字符串操作等基础场景中效率极高。例如经典的'滑动窗口求最大平均数',本质上就是双指针的变种。

2. 动态规划实战:停车位问题详解

2.1 问题描述与建模

'找车位'问题的典型描述是:给定一个只包含 0 和 1 的数组,1 表示已有车辆停放,0 表示空位。要求找到一个停车位,使得该位置到最近车辆的距离最大。比如数组 [1,0,0,0,1,0,1],最优解是下标 2 的位置,此时最近距离为 2。

这个问题可以分解为两个子问题:

  1. 从左向右遍历,记录每个位置左侧最近的 1 的距离
  2. 从右向左遍历,记录每个位置右侧最近的 1 的距离

最终结果是这两个距离中的较小值,再取所有位置中的最大值。这种'分解子问题 + 组合结果'的思路就是动态规划的典型特征。

2.2 代码实现与优化
def max_parking_distance(spaces):
    n = len(spaces)
    left = [float('inf')] * n
    right = [float('inf')] * n
    
    # 从左向右扫描
    last = -float('inf')
    for i in range(n):
        if spaces[i] == 1:
            last = i
        left[i] = i - last
    
    # 从右向左扫描
    last = float('inf')
    for i in range(n - 1, -1, -1):
        if spaces[i] == 1:
            last = i
        right[i] = last - i
    
    # 计算最大最小距离
    max_dist = 0
    for i in range(n):
        dist = min(left[i], right[i])
         dist > max_dist:
            max_dist = dist
     max_dist
if
return

目录

  1. 1. 动态规划与双指针在华为 OD 机试中的重要性
  2. 2. 动态规划实战:停车位问题详解
  3. 2.1 问题描述与建模
  4. 2.2 代码实现与优化
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • DIY 无人机升压降压电路设计
  • Z-Image-Turbo 生成写实图像技术指南
  • 使用 AI 辅助开发 Java 电商系统核心模块实战
  • Linux Ext2 文件系统深度解析
  • 利用 OpenClaw 和 cpolar 实现内网穿透,打造随身 AI 助手
  • VS Code 配置 GitHub Copilot Agent Skills 实战指南
  • 图神经网络(GNN)研究综述
  • GitHub 学生认证与 PyCharm 配置 Copilot 流程指南
  • 手把手教程:通过扣子平台部署OpenClaw并接入飞书,开启AI自动办公
  • AI Agent 入门指南:从零开始掌握大模型智能体技术
  • OpenClaw 开源 AI 智能体安装与配置指南
  • Win10 彻底关闭 Microsoft 365 Copilot 弹窗的 6 种方案
  • WhisperX 语音识别工具:核心优势与应用场景解析
  • AI 思维解析:从感知到决策的核心逻辑
  • CCF-GESP 2025 年 6 月 C++ 一级真题解析
  • SkyWalking Python 应用追踪:基于 skywalking-python 的埋点实战
  • Git 基础概念与指令快速入门
  • Visual C++ 运行库管理指南:故障诊断与部署维护
  • OpenClaw Secure DM Pairing:为 AI 机器人构建安全私信访问机制
  • Python 生成 12 位随机密码示例

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online