LeetCode 1029. Two City Scheduling

LeetCode 1029

有两个城市,每个城市都要分配N个人,要使得成本最少,那么就要先选那些两者差价最大的城市里面取价格小的那个。如果取满其中的N个之后,我们只能选其他的城市。

    def twoCitySchedCost(self, costs: List[List[int]]) -> int:
    	#按照差价大小倒序排列
        sortedCosts = sorted(costs, key=lambda x: abs(x[0]-x[1]), reverse=True)
        A = len(costs)//2
        B = A

        total = 0
        for c in sortedCosts:
        	#两个城市都没有满,总是取价格小的一个
            if A > 0 and B > 0:
                if c[0] > c[1]:
                    total += c[1]
                    B-=1
                else:
                    total += c[0]
                    A-=1                      
            #A没有满,全部取A              
            elif A > 0:
                total +=c[0]
                A-=1
            #B没有满,那么就全部取B
            elif B > 0:
                total +=c[1]
                B-=1

        return total
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值