当前位置: 首页 > news >正文

lc1030-距离顺序排列矩阵单元格

题目描述

  • 官方把题目描述得稀烂
  • 左上角为 (0, 0),n x m 的点阵(屏幕坐标系,x轴向下,y轴向右)
  • 给定其中一点 p,所有点按到 p 的曼哈顿距离排序

示例

输入:rows = 1, cols = 2, rCenter = 0, cCenter = 0
输出:[[0,0],[0,1]]
输入:rows = 2, cols = 2, rCenter = 0, cCenter = 1
输出:[[0,1],[0,0],[1,1],[1,0]]
输入:rows = 2, cols = 3, rCenter = 1, cCenter = 2
输出:[[1,2],[0,2],[1,1],[0,1],[1,0],[0,0]]

题解

  • 思路
    • 把所有点生成出来,按曼哈顿距离排序即可
    • 用小顶堆也行,但没有排序方便
func allCellsDistOrder(rows int, cols int, rCenter int, cCenter int) [][]int {res := make([][]int, 0, rows * cols)for i := 0; i < rows; i ++ {for j := 0; j < cols; j ++ {res = append(res, []int{i, j})}}sort.Slice(res, func(i, j int) bool {return myabs(res[i][0] - rCenter) + myabs(res[i][1] - cCenter) <myabs(res[j][0] - rCenter) + myabs(res[j][1] - cCenter)})return res
}func myabs(x int) int {if (x < 0) { x = -x }return x
}
http://www.hskmm.com/?act=detail&tid=7576

相关文章:

  • 这是一个核弹
  • 【abc180F】Unbranched - Harvey
  • 合并区间-leetcode
  • 两种判断计算机大小端模式的方法
  • ROS2之节点
  • 9.17日总结
  • ECT-OS-JiuHuaShan 框架,元推理AGI奇迹
  • Mapper与Mapper.xml的关系
  • Rocky Linux10.0安装zabbix7.4详细步骤 - 教程
  • 【P3158】放棋子 - Harvey
  • 最强AI语音克隆和文本配音工具!与真人无异,CosyVoice下载介绍
  • 近日C++线上练习结果
  • 密力根油滴实验实验报告
  • Linux 系统插入U盘/移动硬盘实现自动挂载
  • 来点人瑞平我
  • 日总结 2
  • 概率论第一章部分习题
  • 日常 3
  • 【P2051】中国象棋 - Harvey
  • JavaDay6
  • Ubuntu Linux 云服务器常见安全漏洞修复方法汇总 Apache/OpenSSH/DNS
  • 多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。
  • Min-Max 容斥小记
  • 【POJ1737】Connected Graph - Harvey
  • AI智能体开发实战:从提示工程转向上下文工程的完整指南
  • 解码C语言九条语句
  • 某交互题选讲的补题记录
  • openwrt ipv6 NAT6配置
  • 奶龙抽象语录
  • 解题报告-P11670 [USACO25JAN] Cow Checkups S