【面试题】找到 Alice 和 Bob 可以相遇的建筑

简介: 【面试题】找到 Alice 和 Bob 可以相遇的建筑

找到 Alice 和 Bob 可以相遇的建筑**

仅供学习

题目描述

一、第一版结果

可以找到结果,但是不能保证每次查找都是最左边位置


1.1 解题思路

使用动态规划来处理建筑的最远到达位置,并在此基础上处理查询。

1.2 优化方法

  • 计算每个建筑能到达的最远建筑
  • 使用动态规划来计算从每个建筑能到达的最远建筑。
  • 处理查询:
  • 对于每个查询,找出 Alice 和 Bob 的可到达范围的交集,并返回最左边的建筑。

1.3 实现步骤

  • 计算每个建筑的最远到达建筑
  • 使用 dp 数组来存储从每个建筑能够到达的最远建筑。
  • 处理查询:
  • 对于每个查询,检查 Alice 和 Bob 是否可以相遇,并返回最小的符合条件的建筑索引。


1.4 示例代码

以下是优化后的 Python 代码实现

def find_building(heights, queries):
    n = len(heights)

    # 动态规划计算每个建筑的最远到达建筑
    farthest = list(range(n))

    for i in range(n):
        j = i + 1
        while j < n:
            if heights[j] > heights[i]:
                farthest[i] = j
            j += 1

    results = []

    # 处理每个查询
    for ai, bi in queries:
        if ai >= n or bi >= n:
            results.append(-1)
            continue

        # 找到 Alice 能到达的范围
        max_reach_alice = farthest[ai]
        for in_n in farthest[ai:]:

            if n < in_n or bi < in_n:
                break
            max_reach_alice = in_n
        print(ai, bi, max_reach_alice)
        # 找到 Bob 能到达的范围
        max_reach_bob = farthest[bi]
        for in_n in farthest[bi:]:

            if n < in_n or ai < in_n:
                break
            max_reach_bob = in_n
        print(ai, bi, max_reach_bob)

        # 判断是否可以相遇
        if max_reach_alice >= bi and max_reach_bob >= ai:
            results.append(min(max_reach_alice, max_reach_bob))
        else:
            results.append(-1)

    return results

1.5 代码解释

  • 计算最远到达建筑
  • 使用动态规划(farthest 数组)来存储从每个建筑能够到达的最远建筑。
  • 处理查询
  • 对于每个查询,找到 Alice 和 Bob 能够相遇的最右边建筑。

c++代码

找到 Alice 和 Bob 可以相遇的建筑,C++

相关文章
|
XML 前端开发 Java
大数据平台后端一些开发规范
在研发的过程中,总结一些开发规范,希望可以帮助到小伙伴们。
大数据平台后端一些开发规范
|
机器学习/深度学习 人工智能 算法
|
13天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23495 11
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
2天前
|
人工智能 BI 持续交付
Claude Code 深度适配 DeepSeek V4-Pro 实测:全场景通关与真实体验报告
在 AI 编程工具日趋主流的今天,Claude Code 凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但随着原生模型账号稳定性问题频发,寻找一套兼容、稳定、能力在线的替代方案变得尤为重要。DeepSeek V4-Pro 作为新一代高性能大模型,提供了完整兼容 Claude 协议的 API 接口,只需简单配置即可无缝驱动 Claude Code,且在任务执行、工具调用、复杂流程处理上表现极为稳定。
843 0
|
7天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
1678 3
|
17天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
5479 20
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
18天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
6543 16