博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode "Best Meeting Point" !
阅读量:5132 次
发布时间:2019-06-13

本文共 1501 字,大约阅读时间需要 5 分钟。

Interesting one.. I can feel sparkle in mind in the proposed solution - just pick the mid-point! (yes some boiler-plate code below)

class Solution {    //    Greedy solutionpublic:    int minTotalDistance(vector
>& grid) { int n = grid.size(); int m = grid[0].size(); // Record - O(m*n) vector
hori(m); vector
vert(n); for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) { if(grid[i][j]) { hori[j]++; vert[i]++; } } // Expand records - O(k) vector
horis, verts; for(int i = 0; i < hori.size(); i ++) { int v = hori[i]; if(v) { for(int j = 0; j < v; j++) horis.push_back(i); } } for(int i = 0; i < vert.size(); i ++) { int v = vert[i]; if(v) { for(int j = 0; j < v; j++) verts.push_back(i); } } // Get point coords size_t hcnt = horis.size(), vcnt = verts.size(); int mid_h = (hcnt % 2) ? horis[hcnt/2] : ((horis[hcnt/2] + horis[hcnt/2 - 1]) / 2); int mid_v = (vcnt % 2) ? verts[vcnt/2] : ((verts[vcnt/2] + verts[vcnt/2 - 1]) / 2); int ret = 0; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) { if(grid[i][j]) { ret += abs(i - mid_v) + abs(j - mid_h); } } return ret; }};

转载于:https://www.cnblogs.com/tonix/p/4904235.html

你可能感兴趣的文章
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Android-多线程AsyncTask
查看>>
LeetCode【709. 转换成小写字母】
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
linux install ftp server
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
【题解】青蛙的约会
查看>>
autopep8
查看>>