LeetCode.1030-曼哈顿距离排序矩阵单元格(Matrix Cells in Distance Order)

LeetCode --- 1030. Matrix Cells in Distance Order 解题报告 You are given four integersrow,cols,rCenter, andcCenter. There is arows x colsmatrix and you are on the cell with the coordinates(rCenter, cCenter). Returnthe coordinates of all cells in the matrix, sorted by theirdistancefrom(rCenter, cCenter)... 阅读详情

这是小川的第384次更新,第412篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第246题(顺位题号是1030)。我们给出一个矩阵,其中R行和C列具有整数坐标(r,c)的单元格,其中0 <= r <R且0 <= c <C。

另外,我们在该矩阵中给出了一个坐标为(r0,c0)的单元格。

返回矩阵中所有单元格的坐标,按照它们从(r0,c0)到最小距离到最大距离的距离进行排序。这里,两个单元格(r1,c1)和(r2,c2)之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)

例如:

输入:R = 1,C = 2,r0 = 0,c0 = 0
输出:[[0,0],[0,1]]
说明:从(r0,c0)到其他单元格的距离为:[0,1]

输入:R = 2,C = 2,r0 = 0,c0 = 1
输出:[[0,1],[0,0],[1,1],[1,0]]
说明:从(r0,c0)到其他单元格的距离为:[0,1,1,2]。答案[[0,1],[1,1],[0,0],[1,0]]也将被接受为正确。

输入:R = 2,C = 3,r0 = 1,c0 = 2
输出:[[1,2],[0,2],[1,1],[0,1],[1,0],[0,0]]
说明:从(r0,c0)到其他单元格的距离为:[0,1,1,2,2,3]。还有其他答案也被认为是正确的,例如[[1,2],[1,1],[0,2],[1,0],[0,1],[0,0]]。

注意:

  • 1 <= R <= 100

  • 1 <= C <= 100

  • 0 <= r0 <R

  • 0 <= c0 <C

02 第一种解法

题目的意思是根据给定范围的R和C组成一个二维数组,算出所有(r,c)到(r0,c0)的曼哈顿距离,根据曼哈顿距离的大小来排序二维数组里面的元素。

因此,我们只需要做两件事情,先将二维数组中的元素初始化好,再根据每个元素到到(r0,c0)的曼哈顿距离来排序数组元素。对于排序,我们借助Arrays的sort方法,在sort方法第二个参数里,实现Comparator接口,重写其compare方法,排序规则依据两点的曼哈顿距离大小来定,最后输出排序后的数组即可。

public int[][] allCellsDistOrder(int R, int C, int r0, int c0) {
    int[][] matrix = new int[R*C][2];
    int index = 0;
    for (int i=0; i<R; i++) {
        for (int j=0; j<C; j++) {
            matrix[index][0] = i;
            matrix[index][1] = j;
            index++;
        }
    }
    Arrays.sort(matrix, new Comparator<int[]>() {
        @Override
        public int compare(int[] a, int[] b) {
            int distance = Math.abs(a[0]-r0)+Math.abs(a[1]-c0);
            int distance2 = Math.abs(b[0]-r0)+Math.abs(b[1]-c0);
            return distance - distance2;
        }
    });
    return matrix;
}

03 第二种解法

思路和第一种解法一样,只是将排序算法优化了,时间复杂度变成了O(N),其中N代表R*C,使用的是计数排序算法,但是这里用到的排序算法和我们之前使用过的排序算法稍有不同,属于进阶版,本周会抽时间单独写一篇介绍计数排序算法的文章,这里就不展开细讲了。

public int[][] allCellsDistOrder2(int R, int C, int r0, int c0) {
    int[][] matrix = new int[R*C][2];
    int[] count = new int[R + C];
    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            int dis = Math.abs(i - r0) + Math.abs(j - c0);
            count[dis + 1]++;
        }
    }
    for (int i = 1; i < count.length; i++) {
        count[i] += count[i - 1];
    }
    for (int r = 0; r < R; r++) {
        for (int c = 0; c < C; c++) {
            int dis = Math.abs(r - r0) + Math.abs(c - c0);
            matrix[count[dis]] = new int[] {r, c};
            count[dis]++;
        }
    }
    return matrix;
}

04 小结

算法专题目前已连续日更超过七个月,算法题文章252+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

用java编写的求两点之间的距离 用java程序编写的求两点之间的距离 定义了点类 通过调用实现算法。 立即下载

相关推荐

解决RK3566 USB OTG模式识别问题:从原理图分析到otg_mode文件操作全解析

本文深入解析RK3566 USB OTG模式识别问题,从硬件原理图设计到Linux内核的otg_mode文件操作,提供全面的调试方案。针对USB_OTG0_ID引脚电路设计、电源管理关联及内核驱动交互等关键点,给出实战调试技巧和常见问题解决方案,帮助开发者高效解决USB OTG模式切换难题。

eee77的博客 866

[C++]LeetCode 地图分析 解题思路及详解

[原题] 你现在手里有一份大小为 n x n 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地。 请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的,并返回该距离。如果网格上只有陆地或者海洋,请返回 -1。 我们这里说的距离是「曼哈顿距离」( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个单元格之间的距离是 |x0 - x1| + |y0 - y1| 。 [示例] 示例一.

weixin_62712365的博客 1252

数字麦克风PDM信号采集与STM32 I2S接口应用(二)

在使用STM32的数字麦克风I2S接口时,计算采样率让人头疼,芯片手册上没有明确的说法,而手册上的计算方法经过测试却和实验不符。借助搜索引擎,大部分资料都是来自于开发板卖家或开发板论坛,主要是咪头采集然后配置WM89系列解码芯片,然后配合FatFS、MP3解码等模式,主要是讲解I2S录音、存储、放音等。外文资料得到的也寥寥无几,也没有找到讲解STM32数字麦克风配置、计算的文档。加上网上资料转载、抄袭、浅尝辄止的笔记教程,这些更是让检索大海捞针,过程艰辛一言难尽,有些网文三言两语抑或作者都没有搞清楚随手一写

XIAOYOUDUODUO的博客 6057

LeetCode 789. 逃脱阻碍者(曼哈顿距离)

1. 题目 你在进行一个简化版的吃豆人游戏。 你从 (0, 0) 点开始出发,你的目的地是 (target[0], target[1]) 。地图上有一些阻碍者,第 i 个阻碍者从 (ghosts[i][0], ghosts[i][1]) 出发。 每一回合,你和阻碍者们可以同时向东,西,南,北四个方向移动,每次可以移动到距离原位置1个单位的新位置。 如果你可以在任何阻碍者抓住你之前到达目的地(阻碍者可以采取任意行动方式),则被视为逃脱成功。 如果你和阻碍者同时到达了一个位置(包括目的地)都不算是逃脱成功。 当

Michael是个半路程序员 1782

Deep Reinforcement Learning - 1. DDPG原理和算法

Deep Reinforcement Learning - 1. DDPG原理和算法 背景描述 DDPG的定义和应用场景 DDPG算法相关基本概念定义 DDPG实现框架和算法 DDPG对于DPG的关键改进 下一篇 以下用RL作为Reinforcement Learning 的简称。背景描述概括来说,RL要解决的问

kenneth_yu的博客 14万+

2026 MCM Problem A:智能手机电池连续时间建模——完整解题思路附第一问解题代码

摘要:本文针对2026年MCM A题"智能手机电池连续时间建模"问题,提出基于能量守恒原理的微分方程模型。通过建立以SOC(t)为状态变量的动态系统,将屏幕亮度、处理器负载等主要耗电因素纳入统一功率框架,实现了不同使用场景下的电量变化精确描述。研究表明,屏幕亮度和CPU负载对续航时间影响最大,温度与后台任务会产生放大效应。该模型具有物理可解释性和应用扩展性,为手机电源管理提供了理论依据。(150字)

一键难忘的博客 772

LeetCode 1779. 找到最近的有相同 X 或 Y 坐标的点

文章目录1. 题目2. 解题 1. 题目 给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。 同时,在同一个坐标系下给你一个数组 points ,其中 points[i] = [ai, bi] 表示在 (ai, bi) 处有一个点。 当一个点与你所在的位置有相同的 x 坐标 或者 相同的 y 坐标时,我们称这个点是 有效的 。 请返回距离你当前位置 曼哈顿距离 最近的 有效 点的下标(下标从 0 开始)。 如果有多个最近的有效点,请返回下标 最小 的一个。 如果没有有效点,请返回

Michael是个半路程序员 888

【Flutter 问题系列第 16 篇】如何防止软键盘弹出后顶掉内容

Flutter 如何防止软键盘弹出后顶掉内容

“Allen Su”的博客 3317

leetcode3102--最小化曼哈顿距离

leetcode3102--最小化曼哈顿距离

bdn_nbd的博客 1239

国科大学习资料--高级软件工程-复习题概念解释答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题概念解释答案 1. 敏捷开发方法与Scrum方法 a.敏捷是一种强调轻量的过程方法论,它强调拥抱变化而不是与之对抗,通过有效的沟通发挥群体的智慧。敏捷方法采用迭代/增量开发的过程模型。敏捷宣言是:个体和交互高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划。 虽然右边的也有价值,但是认为左边的更有价值。 b.Scrum(Schwaber和Beedle)是管理两个披萨规模(4-9人)的软件开发团队的方法,它高频率的短会

无名何许人的博客 1444

QEMU源码全解析 —— virtio(3)

QEMU源码全解析 —— virtio(3)

phmatthaus的专栏 1850

距离顺序排列矩阵单元格

class Solution { public: vector<vector> allCellsDistOrder(int R, int C, int r0, int c0) { vector<vector> res(R*C,vector(3));//数组第三个位置存放两点的曼哈顿距离 int num=0; for(int i=0;i<C;i++) { for(int...

qq_32284397的博客 306

ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例

目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下!由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。

技术干货 1958

Leetcode 1030. 距离顺序排列矩阵单元格 1030. Matrix Cells in Distance Order

1030. 距离顺序排列矩阵单元格 给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。 另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。 返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离...

歌古道的博客 362

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【LeetCode】1030. Matrix Cells in Distance Order 解题报告(Python)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录题目描述题目大意解题方法排序日期 题目地址:https://leetcode.com/problems/matrix-cells-in-distance-order/ 题目描述 We are given a matrix with R rows and C columns has ...

负雪明烛 1127

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

leetcode 题号1030 Matrix Cells in Distance Order

查看题目详情可点击此处。 题目 We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 <= r < R and 0 <= c < C. Additionally, we are given a cell in that matrix...

Cloneable的博客 208

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【LeetCode】1030. Matrix Cells in Distance Order 距离顺序排列矩阵单元格(Easy)(JAVA)

【LeetCode】1030. Matrix Cells in Distance Order 距离顺序排列矩阵单元格(Easy)(JAVA) 题目地址: https://leetcode.com/problems/matrix-cells-in-distance-order/ 题目描述: We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 <= r

qq_16927853的博客 172

LeetCode-1030. Matrix Cells in Distance Order(距离顺序排列矩阵单元格)

距离顺序排列矩阵单元格 Matrix Cells in Distance Order 解 在返回数组的基础上再开一列,储存曼哈顿距离 /** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Not...

三九_感冒灵的博客 321

LeetCode C++ 1030. Matrix Cells in Distance Order【Sort/BFS】简单

We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 <= r < R and 0 <= c < C. Additionally, we are given a cell in that matrix with coordinates (r0, c0). Return the coordinates of all cells in the m

memcpy0的博客 424

leetcode1030. Matrix Cells in Distance Order

leetcode1030. Matrix Cells in Distance Order We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 <= r < R and 0 <= c < C. Additionally, we are given a cell in that matrix with coordinates (r0, c0).

weixin_43550014的博客 196

【leetcode】1030. Matrix Cells in Distance Order

题目如下: We are given a matrix withRrows andCcolumns has cells with integer coordinates(r, c), where0 <= r < Rand0 <= c < C. Additionally, we are given a cell in that matrix w...

weixin_34257076的博客 150

leetcode 1030. Matrix Cells in Distance Order (python)

描述 We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 <= r < R and 0 <= c < C. Additionally, we are given a cell in that matrix with coordinates (r0, c0). Return the coordinates of all cells in th

王大呀呀的博客 368

[Swift]LeetCode1030. 距离顺序排列矩阵单元格 | Matrix Cells in Distance Order

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/stren...

weixin_30909575的博客 126

leetcode第133周赛——1030. 距离顺序排列矩阵单元格

给出R行C列的矩阵,其中的单元格的整数坐标为(r, c),满足0 <= r < R且0 <= c < C。 另外,我们在该矩阵中给出了一个坐标为(r0, c0)的单元格。 返回矩阵中的所有单元格的坐标,并按到(r0, c0)的距离从最小到最大的顺序排,其中,两单元格(r1, c1)和(r2, c2)之间的距离是曼哈顿距离,|r1 - r2|...

来自师范的学渣 614
上一篇: LeetCode.1029-两城调度(Two City Scheduling)
下一篇: 一文弄懂计数排序算法!
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值