美文网首页随笔
Leetcode 1029. 两地调度

Leetcode 1029. 两地调度

作者: zhipingChen | 来源:发表于2019-05-22 14:48 被阅读0次

题目描述

公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。

返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。

示例 1:

输入:[[10,20],[30,200],[400,50],[30,20]]

输出:110

解释:

第一个人去 A 市,费用为 10。
第二个人去 A 市,费用为 30。
第三个人去 B 市,费用为 50。
第四个人去 B 市,费用为 20。

最低总费用为 10 + 30 + 50 + 20 = 110,每个城市都有一半的人在面试。

解法

以 sub 数组表示去 B 市与去 A 市的代价差值,即 sub[i] = cost[i][1] - cost[i][0],对 sub 递减排序。不妨以 ret 表示 2N 人全部去了 B 市的总费用,则 ret - sum(sub[:N]) 表示有 N 人去了 A 市的最低总费用。

class Solution:
    def twoCitySchedCost(self, costs: List[List[int]]) -> int:
        ret,sub=0,[]
        for i in costs:
            ret+=i[1]
            sub.append(i[1]-i[0])
        sub.sort(reverse=True)
        return ret-sum(sub[:len(costs)//2])

题中为一半的人去了 A 市,该方式可同样计算出总人数的三分之一、四分之一人数去 A 市的最小费用问题。

相关文章

  • leetcode 1029. 两地调度

  • Leetcode 1029. 两地调度

    题目描述 公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 c...

  • 1029. 两地调度

    对于一个人来说,他必定要去往A城市或者B城市,去往A城市的对比去往B城市的收益为两者之差,收益最大化就是最终结果的...

  • 1029. 两地调度(Python)

    难度:★★★☆☆类型:数组方法:贪心算法 题目 力扣链接请移步本题传送门[https://leetcode-cn....

  • 两地调度

    题目: 公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 co...

  • 贪心--两地调度

    目录[https://www.jianshu.com/p/85e18c21317a] 题号[https://lee...

  • Day62 两地调度

    公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[...

  • 1029.旧键盘

    题目描述 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被...

  • leetcode-任务调度器(桶思想)

    这道题利用了桶思想,是自己一直没涉及,没懂的领域,卡了好久,是一道挺简单,通过率很高的题目,可惜自己没想出来。题解...

  • 高级调度(作业调度)、低级调度(进程调度)、中级调度

    处理机调度层次 调度层次分为三种 高级调度 = 作业调度 = 长程调度 低级调度 = 进程调度 = 短程调度 中级...

网友评论

    本文标题:Leetcode 1029. 两地调度

    本文链接:https://www.haomeiwen.com/subject/svxuzqtx.html