Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
bb5c72f
0004_Solved
WAcry May 9, 2020
1d540ec
Rename 0004-median-of-two-sorted-arrays to 0004-median-of-two-sorted-…
WAcry May 9, 2020
0a528f2
0004_Solved
WAcry May 9, 2020
58d4e87
Merge pull request #85 from chilimyan/master
MisterBooo May 9, 2020
bcacf82
0004_Solved
WAcry May 9, 2020
74f1537
0004_Solved
WAcry May 9, 2020
76b7c5f
Merge pull request #86 from freetreer/master
MisterBooo May 9, 2020
938f18f
0025 Solved
anomot May 9, 2020
7ee0923
695
nettee May 9, 2020
1c55e0b
Solve 0137
peteryuhang May 9, 2020
5984175
Fix name typo
peteryuhang May 9, 2020
7163aaf
solved @xiaoshuai96
xiaoshuai96 May 10, 2020
1882475
Merge pull request #87 from anomot/master
MisterBooo May 11, 2020
c6ab9a2
Merge pull request #88 from nettee/695
MisterBooo May 11, 2020
cca9325
Merge pull request #89 from peteryuhang/master
MisterBooo May 11, 2020
9c0eb9d
Merge pull request #90 from xiaoshuai96/master
MisterBooo May 11, 2020
55ec12a
替换坏的gif
xiaoshuai96 May 11, 2020
b54bba9
0530 solved
zzilcc May 12, 2020
4f4ed06
add default return value to Two-Sum solution
underspirit May 13, 2020
0e9512c
Merge pull request #91 from xiaoshuai96/master
MisterBooo May 14, 2020
3302fb3
Merge pull request #92 from zzilcc/master
MisterBooo May 14, 2020
0a7cbf6
Solved 0260
peteryuhang May 17, 2020
1ce488f
solved @xiaoshuai96
xiaoshuai96 May 17, 2020
8989334
Merge pull request #93 from underspirit/bugfix-1
MisterBooo May 18, 2020
26d9265
Merge pull request #94 from peteryuhang/master
MisterBooo May 18, 2020
74af9ba
Merge pull request #95 from xiaoshuai96/master
MisterBooo May 18, 2020
566bcae
Solved 0120
peteryuhang May 23, 2020
62bcddc
Merge pull request #97 from peteryuhang/master
MisterBooo May 26, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
solved @xiaoshuai96
  • Loading branch information
xiaoshuai96 committed May 10, 2020
commit 7163aaffbfd67bba5c2c7c8a40e5321ffb52500a
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
68 changes: 68 additions & 0 deletions 1054-rearrangeBarcodes/Article/1054-rearrangeBarcodes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
## LeetCode第1054号问题:距离相等的条形码

> 本文首发于公众号「图解面试算法」,是 [图解 LeetCode ](<https://github.com/MisterBooo/LeetCodeAnimation>) 系列文章之一。
>
> 同步个人博客:www.zhangxiaoshuai.fun

**本题选自leetcode第1054号问题,medium级别,目前通过率33.3%**

**题目描述:**

在一个仓库里,有一排条形码,其中第 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
### 题目分析:
1.首先我们需要将每个条形码和出现的次数作一记录,为了存取方便,这里使用数组(题目中已经给出了数组的最大和最小长度)进行操作;
2.找出其中出现最多次数的条形码,拿到该barcode和count;
3.先将出现次数最多的条形码存入目标数组中(偶数位或者奇数位),并对记录数组作一更新;
4.随后将剩余的barcode填充进目标数组中。

### GIF动画展示:

![](../Animation/1054-rearrangeBarcodes.gif)

### 代码:

```java
public static int[] rearrangeBarcodes(int[] barcodes){
int[] address = new int[10001];
for (int barcode : barcodes)
address[barcode]++;
// 找到出现次数最多的barcode
int maxCode = 0, maxCount = 0;
for (int i = 0; i < address.length; i++) {
if (maxCount < address[i]) {
maxCode = i;
maxCount = address[i];
}
}
int index = 0;
// 先填充最大的那一位barcode
for (; address[maxCode] > 0; index += 2) {
barcodes[index] = maxCode;
address[maxCode]--;
}
// 继续填充剩余的条形码
for (int i = 1; i < address.length; i++) {
while (address[i] > 0) {
//偶数位填充完毕
if (index >= barcodes.length) index = 1;
barcodes[index] = i;
address[i]--;
index += 2;
}
}
return barcodes;
}
```