1054.距离相等的条形码
【LetMeFly】1054.距离相等的条形码
力扣题目链接:https://leetcode.cn/problems/distant-barcodes/
在一个仓库里,有一排条形码,其中第 i
个条形码为 barcodes[i]
。
请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。
示例 1:
输入:barcodes = [1,1,1,2,2,2] 输出:[2,1,2,1,2,1]
示例 2:
输入:barcodes = [1,1,1,1,2,2,3,3] 输出:[1,3,1,3,2,1,2,1]
提示:
1 <= barcodes.length <= 10000
1 <= barcodes[i] <= 10000
方法一:排序(思维 + 构造)
首先使用哈希表ma统计每个数出现的次数。
接着将原始数组barcodes中的元素按照他们在ma中出现的次数从大到小排序,出现次数相同的按照数字大小排序(小到大或大到小都可,这是为了保证相同的数排序后相邻)。
接着开辟一个长度为$len(barcodes)$的答案数组ans,将排好序的barcodes中的元素依次放入ans的偶数下标$0, 2, 4, …$,再依次放入ans的奇数下标$1, 3, 5, …$即可。
题目保证有解,因此不会出现同一个数占据了所有偶数下标后还有剩余的情况
- 时间复杂度$O(len(barcodes)\times \log len(barcodes))$
- 空间复杂度$O(len(barcodes))$
AC代码
C++
1 |
|
Python
1 |
|
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/130665688
1054.距离相等的条形码
https://blog.letmefly.xyz/2023/05/14/LeetCode 1054.距离相等的条形码/