Python中的远距离条形码
假设在仓库中有一排条形码。第i个条形码是条形码[i]。我们必须重新排列条形码,以便没有两个相邻的条形码相同。因此,如果输入为[1,1,1,2,2,2],则输出为[2,1,2,1,2,1]。
为了解决这个问题,我们将遵循以下步骤-
制作一张名为d的映射
将条形码阵列中存在的数字的频率存储到d中
x:=空列表
将所有键值对插入x
i:=0
res:=制作一个长度与条形码相同的列表,并填写[0]
根据频率对x进行排序
而我<结果的长度
result[i]:=x的最后一个条目的元素
降低x的最后一个条目的频率值
如果x的最后一个元素的频率为0,则从x删除该条目
使我增加2
我:=1
而我<结果的长度
result[i]:=x的最后一个条目的元素
降低x的最后一个条目的频率值
如果x的最后一个元素的频率为0,则从x删除该条目
使我增加2
返回结果
让我们看下面的实现以更好地理解-
示例
class Solution(object):
def rearrangeBarcodes(self, barcodes):
d = {}
for i in barcodes:
if i not in d:
d[i] = 1
else:
d[i]+=1
x = []
for a,b in d.items():
x.append([a,b])
i = 0
result = [0]*len(barcodes)
x = sorted(x,key=lambda v:v[1])
while i <len(result):
result[i] = x[-1][0]
x[-1][1]-=1
if x[-1][1]==0:
x.pop()
i+=2
i=1
while i <len(result):
result[i] = x[-1][0]
x[-1][1]-=1
if x[-1][1]==0:
x.pop()
i+=2
return result
ob = Solution()print(ob.rearrangeBarcodes([1,1,1,2,2,2]))输入项
[1,1,1,2,2,2]
输出结果
[2, 1, 2, 1, 2, 1]
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下