由于想要提升自己的编程技巧和算法基础,为将来找工作做准备,所以现在开始每天至少刷一道题,请组织上监督我!
力扣上面的Easy题分为两种,一种是不需要算法逻辑,只需要按照题目描述敲代码即可;另一种是套用标准算法即可。
其中第一类的Easy题,我们就可以采用先用伪代码写出逻辑,再补全小段代码。
方法:贪心
思路:首先假设使所有的人都去B面试,那么B处就多出了N个人, 此时需要选出N个人到达A处面试,这种方式对应的代价是cost_A - cost_B,这个值可正可负。因此我们需要选出对cost_A-cost_B进行排序,选出N个送到A。
例如 2020.08.27[001] 两地调度 问题:
class Solution:
def twoCitySchedCost(self, costs):
# Sort by a gain which company has
# by sending a person to city A and not to city B
# To optimize the company expenses,
# send the first n persons to the city A
# and the others to the city B
补全后的代码为:
class Solution:
def twoCitySchedCost(self, costs):
# Sort by a gain which company has
# by sending a person to city A and not to city B
costs.sort(key = lambda x : x[0] - x[1])
total = 0
n = len(costs) // 2
# To optimize the company expenses,
# send the first n persons to the city A
# and the others to the city B
for i in range(n):
total += costs[i][0] + costs[i + n][1]
return total
补充关于List的小语法:
list.sort(cmp=None, key=None, reverse=False)
- cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定 可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
原文:https://www.cnblogs.com/idella/p/13573983.html