1. leetcode 1054 距离相等的条形码
```python
import collections
class Solution:
def rearrangeBarcodes(self, barcodes: List[int]) -> List[int]:
if len(barcodes) == 1:
return barcodes
res = []
dicta = collections.defaultdict(lambda:0)
for s in barcodes:
dicta[s] +=1
dicta[0] = 0
sort_dicta = sorted(dicta.items(), key = lambda x:x[1])
while len(sort_dicta)> 1:
i = len(sort_dicta) -1
temp = sort_dicta[i][1]
temp_dicta = dict(sort_dicta)
j = i-1
res_temp = [sort_dicta[i][0]]
while j >= 0:
if sort_dicta[j][1] == temp:
res_temp.append(sort_dicta[j][0])
j-=1
else:
if len(res_temp) == 1:
if sort_dicta[j][0]>0:
res_temp.append(sort_dicta[j][0])
diff = 1
else:
diff = temp - sort_dicta[j][1]
break
res += res_temp*diff
if j ==0:
break
else:
for key in res_temp:
temp_dicta[key] -=diff
if temp_dicta[key] ==0:
del temp_dicta[key]
sort_dicta = sorted(temp_dicta.items(), key = lambda x:x[1])
return res