LeetCode 1029. Two City Scheduling (两地调度)

题目标签:Greedy

  重新排序array, 根据到AB城市的距离进行排序:

    如果到B的距离远远大于A,那么把这个很小的A 排序到前面。

    排序完毕之后,排在越前面的都是相较于B,A更小的;排在越后面的都是相较于B,A更大的。

    那么可以在前一半 取A的值,后一半 取B的值。

    具体看code。

 

Java Solution: 

Runtime:  1 ms, faster than 96.15% 

Memory Usage: 37.7 MB, less than 75.00%

完成日期:02/19/2020

关键点:根据情况 重新排序

复制代码
class Solution {
    public int twoCitySchedCost(int[][] costs) {
        /*
            这里是根据到AB城市的距离来进行排序,如果到B的距离远远大于A,那么得到的差值越小
            排序就越在前面,越应该选择到A点而不是去B
        */
        Arrays.sort(costs, (a, b) -> {
            return (a[0] - a[1]) - (b[0] - b[1]);
        });
        
        int minCost = 0;
        
        // take the smaller dist from A in first half of array, then take the smaller dist from B in second half;
        for(int i = 0; i < costs.length; i++) {
            if(i < costs.length / 2) {
                minCost += costs[i][0];
            } else {
                minCost += costs[i][1];
            }
        }
        
        return minCost;
    }
}
复制代码

参考资料:LeetCode Discuss

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @   Jimmy_Cheng  阅读(221)  评论(0编辑  收藏  举报
编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· MQ 如何保证数据一致性?
点击右上角即可分享
微信分享提示