🗒️2146. 价格范围内最高排名的 K 样物品
2025-3-15
| 2025-3-15
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Mar 15, 2025 06:45 AM
给你一个下标从 0 开始的二维整数数组 grid ,它的大小为 m x n ,表示一个商店中物品的分布图。数组中的整数含义为:
  • 0 表示无法穿越的一堵墙。
  • 1 表示可以自由通过的一个空格子。
  • 所有其他正整数表示该格子内的一样物品的价格。你可以自由经过这些格子。
从一个格子走到上下左右相邻格子花费 1 步。
同时给你一个整数数组 pricing 和 start ,其中 pricing = [low, high] 且 start = [row, col] ,表示你开始位置为 (row, col) ,同时你只对物品价格在 闭区间 [low, high] 之内的物品感兴趣。同时给你一个整数 k 。
你想知道给定范围  且 排名最高 的 k 件物品的 位置 。排名按照优先级从高到低的以下规则制定:
  1. 距离:定义为从 start 到一件物品的最短路径需要的步数(较近 距离的排名更高)。
  1. 价格:较低 价格的物品有更高优先级,但只考虑在给定范围之内的价格。
  1. 行坐标:较小 行坐标的有更高优先级。
  1. 列坐标:较小 列坐标的有更高优先级。
请你返回给定价格内排名最高的 k 件物品的坐标,将它们按照排名排序后返回。如果给定价格内少于 k 件物品,那么请将它们的坐标 全部 返回。

BFS

在遍历的过程排序返回答案

注意下面这个问题

遍历完成后,排序,返回答案

参考 newhar
该算法中有几个点,可以借鉴我们学习:
  1. 在队列 queue 中,新增一个维度来保存距离;
  1. 将数据置为相反数,达到 isVisted(访问数组)的作用;
  1. 利用系统内部函数完成我们所期望的事。

📎 参考

 
  • 【题单】网格图(DFS/BFS/综合应用)
  • 293. 网格中的最短路径934. 最短的桥
    Loading...