当前位置:网站首页>leetcode:296.最佳的碰头地点
leetcode:296.最佳的碰头地点
2022-08-08 16:40:00 【OceanStar的学习笔记】
题目来源
题目描述
题目解析
思路一
先看一维是由两个点A和B的情况:
A_____P_______B_
可以发现,只要开会位置P在[A,B]区间内,不管在哪,距离之和都是A和B之间的距离。如果P不在[A,B]区间内,那么距离之和就会大于A和B之间的距离
现在再加两个点C和D:
C_____A_____P_______B______D
通过分析可以得出,P点的最佳位置就是在 [A, B] 区间内,这样和四个点的距离之和为AB距离加上 CD 距离,在其他任意一点的距离都会大于这个距离
因此,只要给位置排好序,然后用最后一个坐标减去第一个坐标,即 CD 距离,倒数第二个坐标减去第二个坐标,即 AB 距离,以此类推,直到最中间停止,那么一维的情况分析出来了
二维的情况就是两个一维相加即可
思路二
根据计算距离的公式可以看出,一个点的横坐标和纵坐标计算是相互独立的。
因此我们可以把二维问题拆成一维问题。
假设一个一维数组如下:
我们要找出一个点,使得所有的 1 到该点的距离之和最小。
其实我们一眼可以看出,这个最优碰头点是索引 6 的地方。
那为什么索引 6 就是最优的碰头点呢?我们下面来逐一分析:
首先,无论碰头点在何处,索引 0 和索引 9 到达这个碰头点走的距离之和肯定是 9.
如果碰头点在索引 6 的左侧,那么索引 5、6、8 到碰头点的距离之和肯定大于 8-5:
如果碰头点在所有 6 的右侧,那么索引 5、6、8 到碰头点的距离之和肯定大于 8-5;
因此,位置 6 就是最优碰头点。
这个位置的索引恰好是所有 1 所在索引的中位数。
比如上面的 1 所在索引分别是 {0,5,6,8,9} ,中位数为 6。
由于题目是二维问题,且距离计算时,横纵坐标的计算是相互独立的,因此把问题拆分成两个一维问题之和。
1、找出所有 1 所在的行(列)索引;
2、最优点肯定为中位数的地方(如果 1 的个数是偶数个,那么最优点在中间的两个 1 其中任意一个);
3、分别计算行距离和纵距离,相加即可。
实现
class Solution{
int minTotalDistance(vector<int> v){
int res = 0;
std::sort(v.begin(), v.end());
int i = 0, j = v.size() - 1;
while (i < j){
res += (v[j--] - v[i++]);
}
return res;
}
public:
int minTotalDistance(vector<vector<int>>& grid){
vector<int> rows, cols;
for (int i = 0; i < grid.size(); ++i) {
for (int j = 0; j < grid[i].size(); ++j) {
if(grid[i][j] == 1){
rows.push_back(i);
cols.push_back(j);
}
}
}
return minTotalDistance(rows) + minTotalDistance(cols);
}
};
边栏推荐
猜你喜欢
NSSCTF部分复现
一、搭建django自动化平台(实现一键执行sql)
GHOST tool to access the database
NFT质押挖矿分红系统开发逻辑功能介绍
科创人·优锘科技COO孙岗:错误问题找不到正确答案,求索万物可视的大美未来
R语言4.04安装教程
mmdetection最新版食用教程(一):安装并运行demo及开始训练coco
APICloud AVM wraps date and time selection components
iNFTnews | Metaverse brings new ideas for enterprise development
2022年11大最佳缺陷管理工具盘点
随机推荐
使用 Pygame 构建和可视化数独游戏
MySQL database
UTF-8 BOM文件导致配置文件无法读取
Lecture 207, Class Schedule
【uniapp小程序】视图容器cover-view
2022年中国全民健身发展白皮书
laravel - query builder 2
基于FTP协议的Excel文件上传与下载
Charles MOCK 数据 htpps代理
spark集群环境搭建
OpenAI怎么写作「谷歌小发猫写作」
Kubernetes二进制部署高可用集群
高数_证明_基本初等函数的导数公式
国内部分手机游戏开始显示用户IP属地
JVM-简介&垃圾回收&内存泄漏分析
The situation of the solution of the equation system and the correlation transformation of the vector group
Acwing第 63 场周赛【未完结】
laravel-practice
六、Jmeter定时器
synchronized加载static关键字前和普通方法前的区别?