给你一个 m x n 的二进制网格 grid ,其中 1 表示某个朋友的家所处的位置。返回 最小的 总行走距离 。

总行走距离 是朋友们家到碰头地点的距离之和。

我们将使用 曼哈顿距离 来计算,其中 distance(p1, p2) = |p2.x - p1.x| + |p2.y - p1.y| 。

示例 1:

输入: grid = [[1,0,0,0,1],[0,0,0,0,0],[0,0,1,0,0]]
输出: 6
解释: 给定的三个人分别住在(0,0),(0,4) 和 (2,2):
(0,2) 是一个最佳的碰面点,其总行走距离为 2 + 2 + 2 = 6,最小,因此返回 6。
示例 2:

输入: grid = [[1,1]]
输出: 1

提示:

m == grid.length
n == grid[i].length
1 <= m, n <= 200
grid[i][j] == 0 or 1.
grid 中 至少 有两个朋友

解题思路:
节点的最小距离 一定是中位数。奇数情况:比如三个数 那么所有的数到中间的位置就是最小的。偶数也一样。只要是中间两个数之间的所有位置都可以。因为是二维坐标。行纵距离可以分开计算。把二维抽象成两个一维坐标进行计算。两个都是最小就是答案。
代码如下:

class Solution {public://节点的最小距离 一定是中位数。奇数情况:比如三个数 那么所有的数到中间的位置就是最小的。偶数也一样。只要是中间两个数之间的所有位置都可以。因为是二维坐标。行纵距离可以分开计算。把二维抽象成两个一维坐标进行计算。两个都是最小就是答案。int minTotalDistance(vector<vector<int>>& grid) {vector<int>cols;vector<int>rows;int m = grid.size(), n = grid[0].size();for (int i = 0; i < m; ++i)for (int j = 0; j < n; ++j) {if (grid[i][j] == 1) cols.emplace_back(i);}for(int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) {if (grid[j][i] == 1) rows.emplace_back(i);}auto getmin = [&](vector<int>& v) {int mid = v.size() / 2;int mvalue = v[mid];int res = 0;for (auto item : v) {res += abs(item - mvalue);}return res;};return getmin(cols) + getmin(rows);}
};

leetcode296. 最佳的碰头地点相关推荐

  1. LeetCode 296. 最佳的碰头地点(坐标独立+中位数的地方最近)

    文章目录 1. 题目 2. 解题 1. 题目 有一队人(两人或以上)想要在一个地方碰面,他们希望能够最小化他们的总行走距离. 给你一个 2D 网格,其中各个格子内的值要么是 0,要么是 1. 1 表示 ...

  2. 左程云大厂算法刷题班——12

    第一题 leetcode296. 最佳的碰头地点 public class 第一题12 {public static void main(String[] args) {int[][] grid = ...

  3. leetcode刷题目录总结

    题目 题目 技巧 相似的题目 其他 1. 无序数组中找出目标为target的两个数 先定义下一个数,然后找两位的数是否存在 高频, 大厂刷题班, 第27节 2.逆序链表两数相加 链表.各位加法 高频, ...

  4. Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)

    Leetcode题目分类指南 笔者在学习<算法导论>同时,希望能够配合Leetcode的题目进行分类模块化练习,该分类为笔者自己根据做题学习经验,结合<算法导论>的内容,给出L ...

  5. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  6. LeetCode1-620题汇总,希望对你有点帮助!

    时间很快,公众号发布的LeetCode题目,已经达到620道题了.今天把发布的1-620篇LeetCode文章整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于算法感兴趣的, ...

  7. LeetCode1-580题汇总,希望对你有点帮助!

    时间很快,公众号发布的LeetCode题目,已经达到560道题了.今天把发布的1-560篇LeetCode文章整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于算法感兴趣的, ...

  8. LeetCode1-560题汇总,希望对你有点帮助!

    时间很快,公众号发布的LeetCode题目,已经达到560道题了.今天把发布的1-560篇LeetCode文章整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于算法感兴趣的, ...

  9. LeetCode1-540题汇总,希望对你有点帮助!

    时间很快,公众号发布的LeetCode题目,已经达到520道题了.今天把发布的1-520篇LeetCode文章整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于算法感兴趣的, ...

  10. LeetCode1-500题汇总,希望对你有点帮助!

    时间很快,公众号发布的LeetCode题目,已经达到500道题了.今天把发布的1-500篇LeetCode文章整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于算法感兴趣的, ...

最新文章

  1. js时间格式化函数,支持Unix时间戳
  2. 基于SRCNN的表情包超分辨率(附tensorflow实现)
  3. user-select属性用法
  4. linux rpm 校验软件包中的文件
  5. Oracle入门(十四.8)之迭代控制:基本循环Loop
  6. 【数据结构与算法】【算法思想】 A *搜索算法
  7. 学习python 正则表达式——与你同行!
  8. bzoj4415 [Shoi2013]发牌 线段树
  9. C++_结构体指针_嵌套结构体_结构体做为函数参数_结构体值传递和指针传递---C++语言工作笔记026
  10. HDU1865 1sting【递推】
  11. spring 中发邮件的设置
  12. 人工智能白皮书(2022年) 附下载
  13. 一种传统发酵彝药有效抑制新冠病毒的复制体外研究
  14. html5 在线留言,html5实现手机弹窗留言对话框
  15. 如何查询芯片 IC 元器件 的datasheet数据手册
  16. [JZOJ3461] 小麦亩产一千八
  17. Blender 字幕编辑器插件(SimpleSubtitleEditor)改良版
  18. Axure 设计App界面
  19. adb 工具源码修改
  20. 三层架构-UI层 显示数据

热门文章

  1. UIAccelerometer 加速计
  2. 【Love2d从青铜到王者】第四篇:Love2d之LÖVE与移动矩形
  3. 使用思维导图提高工作效率的秘诀:6种工作思维导图模板分享
  4. 愚人节里的巧合与必然:BAT等亮出的AI招牌故事
  5. HTML中的header标签怎么用?HTML中header标签的作用_header标签正确用法
  6. header html 高度,CSS经典基础布局,自适应高度。header,content,footer.
  7. 计算机无法删除u盘里东西,u盘里东西删不掉,详细教您u盘文件删不了怎么办
  8. 计算机一级如何添加对角线,如何在表格中添加对角线
  9. 解决visio中插入符号出现乱码
  10. zyf的现状 (BFS+优先队列)