Skip to content

Commit 43e86d2

Browse files
authored
Create L954.go
1 parent 6853214 commit 43e86d2

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Medium/L954.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package Medium
2+
3+
func canReorderDoubled(arr []int) bool {
4+
if len(arr) == 0 {
5+
return true
6+
}
7+
sort.Ints(arr)
8+
mp := make(map[int]int)
9+
for _, i := range arr {
10+
if i == 0 {
11+
continue
12+
}
13+
mp[i]++
14+
}
15+
16+
for i := range arr {
17+
if arr[i] != 0 {
18+
if mp[arr[i]] > 0 {
19+
tgt := arr[i] * 2
20+
if arr[i] < 0 {
21+
if arr[i]%2 != 0 {
22+
return false
23+
} else {
24+
tgt = arr[i] / 2
25+
}
26+
}
27+
val, exists := mp[tgt]
28+
if !exists || val < mp[arr[i]] {
29+
return false
30+
} else {
31+
mp[tgt] = mp[tgt] - mp[arr[i]]
32+
mp[arr[i]] = 0
33+
}
34+
}
35+
}
36+
}
37+
38+
return true
39+
}

0 commit comments

Comments
 (0)