leetcode 1266

根据题意,需要依次求出两个相邻点之间要花费的时间。

设两个相邻点为A,B。

m = |Ax - Bx| 为两点横坐标之间距离。

n = |Ay - By| 为两点纵坐标之间距离。

因为横向和竖向移动一个单位消耗时间为1s,斜向移动sqrt(2)距离消耗时间也为1s,

则在移动过程中优先采取斜向路线,从A先移动到与B横坐标或纵坐标相同的位置,之后再横向或竖向移动。

所消耗总时间为m 或 n的最大值。

class Solution {
public:
    int minTimeToVisitAllPoints(vector<vector<int>>& points) {
        int time(0), m, n;
        if(points.size() == 1)
            return 0;

        vector<vector<int>>::iterator it1(points.begin());
        vector<vector<int>>::iterator it2(points.begin()+1);
        
        while(it2 != points.end())
        {
            m = abs((*it1)[0] - (*it2)[0]);
            n = abs((*it1)[1] - (*it2)[1]);
            time += m > n ? m : n;

            it1++;
            it2++;
        }
        return time;

    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值