元宝    LeetCode 675. Cut Off Trees for Golf Event Python3 Implement

Approach: Sort by Height + BFS Between Consecutive Trees

The rules force a fixed order: trees must be cut shortest to tallest. So the walk decomposes into independent legs — go from your current cell to the next required tree by the shortest path, pay that distance, repeat. Shortest path on an unweighted grid with obstacles is BFS. If any leg is unreachable (a tree walled off by
"0"s), return
“-1”.

from collections import deque
from typing import List

class Solution:
def cutOffTree(self, forest: List[List[int]]) -> int:
if not forest or not forest[0]:
return -1
m, n = len(forest), len(forest[0])

def bfs(sr: int, sc: int, tr: int, tc: int) -> int: """Shortest step count from (sr,sc) to (tr,tc); -1 if unreachable.""" if sr == tr and sc == tc: return 0 seen = [[False] * n for _ in range(m)] seen[sr][sc] = True q = deque([(sr, sc, 0)]) # (row, col, dist) while q: r, c, d = q.popleft() for nr, nc in ((r + 1, c), (r - 1, c), (r, c + 1), (r, c - 1)): if 0 <= nr < m and 0 <= nc < n and not seen[nr][nc] and forest[nr][nc] > 0: if nr == tr and nc == tc: return d + 1 # early exit on hit seen[nr][nc] = True # mark on enqueue q.append((nr, nc, d + 1)) return -1 # Height > 1 means a tree; cut in ascending height order. trees = sorted((forest[r][c], r, c) for r in range(m) for c in range(n) if forest[r][c] > 1) total = row = col = 0 for _, tr, tc in trees: d = bfs(row, col, tr, tc) if d == -1: return -1 total += d row, col = tr, tc return total

Key details

  • Height
    “1” is walkable ground, not a tree. Only
    “> 1” enters the
    “trees” list — the classic bug here is treating
    “1” as a tree.

“forest[nr][nc] > 0” is the walkability test:
“0” is blocked, everything else is passable (including trees you haven’t cut yet — you may walk over them).

  • Mark
    “seen” on enqueue, not dequeue, or the same cell gets pushed repeatedly.
  • Distance rides in the queue tuple, so no
    “dist[][]” grid per leg.
  • Early return the moment the target is generated as a neighbor; no need to drain the queue.
  • Sorting is by height only — heights are guaranteed distinct, so no tie-break needed.

Complexity

  • Time: O(T · m · n) for T trees (one BFS per leg), plus O(T log T) to sort.
  • Space: O(m · n) for
    “seen” and the queue, rebuilt per leg.

Verified against the official cases:
“[[1,2,3],[0,0,4],[7,6,5]] → 6”,
“[[1,2,3],[0,0,0],[7,6,5]] → -1”,
“[[2,3,4],[0,0,5],[8,7,6]] → 6”, and the large 4×4 case →
“46”.

相关新闻

Claude Code 自定义状态栏工具:安装、配置与 Subagent 状态展示

Claude Code 自定义状态栏工具:安装、配置与 Subagent 状态展示

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 19:02:52 阅读更多 →
URP高级自定义后处理实战:从Volume参数到RenderPass全解析

URP高级自定义后处理实战:从Volume参数到RenderPass全解析

1. 为什么URP下做自定义后处理&#xff0c;和以前完全不一样如果你正在Unity项目里用URP做渲染&#xff0c;八成会碰到这样一个需求&#xff1a;在屏幕上加一个全局的模糊、描边、扫描线、径向畸变之类的效果。以前用内置渲染管线的时候&#xff0c;我们习惯在OnRenderImage里写…

2026/10/19 19:01:51 阅读更多 →
RAG知识库搭建与优化实战:从入门到精通,打造高效智能问答系统

RAG知识库搭建与优化实战:从入门到精通,打造高效智能问答系统

做RAG项目一年多了&#xff0c;从最早照着教程搭一个能跑的Demo&#xff0c;到现在能在生产环境里稳定支撑几万份文档的问答&#xff0c;中间踩过的坑比想象中多得多。这个项目标题叫“RAG知识库搭建与优化实战&#xff1a;从入门到精通&#xff0c;打造高效智能问答系统”&…

2026/10/19 18:59:48 阅读更多 →

最新新闻

开源代码评审工具open-code-review:把Code Review变成工程化流程

开源代码评审工具open-code-review:把Code Review变成工程化流程

现在很多团队谈到 Code Review&#xff0c;第一反应就是"又慢又烦"&#xff0c;评审人打开 PR 看一眼就 Approve&#xff0c;或者干脆在群里吼一句"谁有空帮我看看"&#xff0c;然后一整天没人理。我做了几年研发管理和架构工作&#xff0c;见过太多 Revie…

2026/10/19 19:51:14 阅读更多 →
小说阅读平台章节模块设计:从ThinkPHP到Laravel重构实战

小说阅读平台章节模块设计:从ThinkPHP到Laravel重构实战

做小说在线阅读平台这件事&#xff0c;我最深的体会是&#xff1a;真正决定项目上限的往往不是花里胡哨的功能&#xff0c;而是最基础的那套章节模块。标题里的“章节设计”四个字&#xff0c;看起来只是建一张表、写几个接口&#xff0c;实际做下来才发现&#xff0c;它把正文…

2026/10/19 19:50:13 阅读更多 →
毕业论文开题报告AI优化指南:9款工具组合与提示词实践

毕业论文开题报告AI优化指南:9款工具组合与提示词实践

毕业季又到了&#xff0c;朋友圈里一片哀嚎。我发现大家用AI工具写开题报告&#xff0c;基本就两种用法&#xff1a;要么直接复制粘贴标题让AI代写全文&#xff0c;要么把AI当成搜索引擎问几个问题。结果交上去的初稿被导师批得体无完肤&#xff0c;要么内容空泛不知所云&#…

2026/10/19 19:50:13 阅读更多 →
Caveman提示词压缩法:大模型API输出Token成本直降80%

Caveman提示词压缩法:大模型API输出Token成本直降80%

前阵子被大模型API账单吓到了&#xff0c;一个批量打标任务跑下来&#xff0c;几千块钱说没就没。细看消耗明细&#xff0c;真正的开销大头不在输入&#xff0c;反而在输出这一侧——模型每次回答都带着一大段解释、铺垫、客套话&#xff0c;一句话能说清的事硬要写一百个Token…

2026/10/19 19:50:13 阅读更多 →
Windows客户端与Linux服务端跨平台联调:从环境差异到根因定位

Windows客户端与Linux服务端跨平台联调:从环境差异到根因定位

上周五下午快下班的时候&#xff0c;运维转过来一个问题&#xff1a;某桌面客户端连不上刚上线的 Linux 服务端&#xff0c;界面一直转圈&#xff0c;过几分钟才弹一个超时提示。我跨过半个工区去看&#xff0c;发现客户端同事已经在重新编译代码&#xff0c;准备打印一堆调试信…

2026/10/19 19:50:13 阅读更多 →
PADS、AD、Cadence 互转实战:四条链路版本配置与避坑指南

PADS、AD、Cadence 互转实战:四条链路版本配置与避坑指南

简介&#xff1a;这份文档面向使用PADS、Altium Designer与Cadence的电子工程师及PCB设计学习者&#xff0c;聚焦不同EDA工具之间设计文件互操作的痛点&#xff0c;系统梳理了PADS转AD、AD转Cadence、AD转PADS、Cadence转PADS等常见转换路径。内容覆盖原理图与PCB两条主线&…

2026/10/19 19:50:13 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介&#xff1a;本资源为电源技术方向的学术研究文档&#xff0c;聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略&#xff0c;面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集&#xff0c;共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →