在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。
请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等。 你可以返回任何满足该要求的答案,此题保证存在答案。
示例 1:
输入:[1,1,1,2,2,2]
输出:[2,1,2,1,2,1]
示例 2:
输入:[1,1,1,1,2,2,3,3]
输出:[1,3,1,3,2,1,2,1]
提示:
1 <= barcodes.length <= 10000
1 <= barcodes[i] <= 10000
class Solution {
public int[] rearrangeBarcodes(int[] barcodes) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
PriorityQueue<Integer> queue = new PriorityQueue((x,y)->map.get(y)-map.get(x));
for(int temp:barcodes){
map.put(temp, map.getOrDefault(temp, 0)+1);
}
for(Integer temp : map.keySet()){
queue.offer(temp);
}
int[] arr = new int[barcodes.length];
int index=0;
while(!queue.isEmpty()){
int temp = queue.poll();
for(int i=0;i<map.get(temp);++i){
arr[index]=temp;
index+=2;
if(index>=barcodes.length){
index=1;
}
}
}
return arr;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/distant-barcodes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。