leetcode-zj-future03:快递中转站选址

简介: leetcode-zj-future03:快递中转站选址

题目

题目连接

某区域地图记录在 k 二维数组 area,其中 0 表示空地,1 表示快递分发点。

若希望选取一个地点设立中转站,使得中转站至各快递分发点的「曼哈顿距离」总和最小。请返回这个 最小 的距离总和。

注意:

  • 曼哈顿距离:distance(p1, p2) = |p2.x - p1.x| + |p2.y - p1.y|
  • 所有位置均可作为快递中转站的设立点。

示例 1:

输入: area = [[0,1,0,0,0],[0,0,0,0,1],[0,0,1,0,0]]
输出: 5 
解释: 三个快递分发点分别位于(0,1),(1,4) 和 (2,2):
     (1,2) 是最佳的中转站选址,总距离为 2 + 2 + 1 = 5。

示例 2:

输入: area = [[1,1],[1,1]]
输出: 4
解释: (0,0) 是最佳的中转站选址之一,总距离为 0 + 1 + 1 + 2 = 4。

解题

方法一:

由于是曼哈顿距离,其实可以可以化解二维为一维的问题

对于下图中,选取箭头所指的选为中转站,距离最短

class Solution {
public:
    int buildTransferStation(vector<vector<int>>& area) {
        vector<int> x;
        vector<int> y;
        for(int i=0;i<area.size();i++){
            for(int j=0;j<area[0].size();j++){
                if(area[i][j]==1){
                    x.push_back(i);
                    y.push_back(j);
                }
            }
        }
        sort(x.begin(),x.end());
        sort(y.begin(),y.end());
        int mid=x.size()/2;
        int res=0;
        for(int xi:x){
            res+=abs(xi-x[mid]);
        }
        for(int yi:y){
            res+=abs(yi-y[mid]);
        }
        return res;
    }
};
相关文章
蓝桥杯:vector 与 例题:快递分拣
蓝桥杯:vector 与 例题:快递分拣
70 0
快递鸟/菜鸟电子面单接口的申请方法
电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。 一.电子面单接口类型及定义 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必须快递公司上门做系统对接,使用一家快递则需要对接一次,比较麻烦,而且后期对接成本也较高。
|
5月前
|
Go
golang力扣leetcode 309.最佳买卖股票时机含冷冻期
golang力扣leetcode 309.最佳买卖股票时机含冷冻期
32 0
|
5月前
leetcode-zj-future04:门店商品调配
leetcode-zj-future04:门店商品调配
34 0
|
10月前
|
人工智能 C语言
运输问题案例
运输问题案例
|
数据采集 算法 Java
全国快递物流 API 实现快递单号自动识别的原理解析
全国快递物流 API 实现快递单号自动识别的原理解析
622 0
|
机器学习/深度学习 传感器 供应链
【优化选址】基于遗传算法实现发件中心-配送点-客户三级选址问题求解附matlab代码
【优化选址】基于遗传算法实现发件中心-配送点-客户三级选址问题求解附matlab代码
|
机器学习/深度学习 传感器 达摩院
不到9万元的毫末小魔驼3.0发布,末端物流自动配送进入精耕期
不久以后将有越来越多的末端物流自动配送车辆出现在大街小巷,和千万快递小哥一起,成为物流“最后一公里”不可或缺的一部分。
|
算法
关于外卖配送最短路径问题补充
关于外卖配送最短路径问题补充
181 0
关于外卖配送最短路径问题补充