知识点:for 循环和简单排序
收录原因:对题目理解有误,逻辑出现错误,解题思路不清晰
n = int(input())
w = list(map(int,input().split()))
def sort_min(n,s):
s.sort()
l = []
for i in range(1,len(s)):
result = s[i] - s[i-1]
l.append(result)
l.sort()
return l[0]
print(sort_min(n,w))
思路:
要找最小化战斗力差距,先要计算差距;忽略a和b数组究竟是怎么组成的,最终都是要找最小差距,而最小差距,第一步就是要先计算差距,所以这里使用for循环计算每个可能的最小的战斗力差距,第二步就是找到这些差距里的最小值,则为答案。
误区:
1. 试图找到a和b数组组成的所有可能性(时间复杂度太高,写起来太复杂)
2.试图直接计算数组里的最大值-数组里第二大值(a和b数组里不一定各存在这两个值,比如a数组中可能存在最大值和第二大值,而b数组中存在第三大值)
3. 把a和b数组的分组作为先决条件,而不是把最小化战斗力差距作为先决条件(题目明确说明,a和b的分组一定是战斗力差距最小的时候,所以直接计算战斗力差距最小,也就是直接找到所有战斗力差距中的最小值即可。)