Skip to content

Commit fb72c85

Browse files
committed
Modify solution 0164
1 parent 3e2d511 commit fb72c85

File tree

3 files changed

+19
-28
lines changed

3 files changed

+19
-28
lines changed

leetcode/0164.Maximum-Gap/164. Maximum Gap.go

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package leetcode
22

3-
// 解法一
3+
// 解法一 快排
44
func maximumGap(nums []int) int {
55
if len(nums) < 2 {
66
return 0
77
}
88
quickSort164(nums, 0, len(nums)-1)
9-
109
res := 0
1110
for i := 0; i < len(nums)-1; i++ {
1211
if (nums[i+1] - nums[i]) > res {
@@ -37,52 +36,42 @@ func quickSort164(a []int, lo, hi int) {
3736
quickSort164(a, p+1, hi)
3837
}
3938

40-
// 解法二
39+
// 解法二 基数排序
4140
func maximumGap1(nums []int) int {
42-
4341
if nums == nil || len(nums) < 2 {
4442
return 0
4543
}
46-
4744
// m is the maximal number in nums
4845
m := nums[0]
4946
for i := 1; i < len(nums); i++ {
5047
m = max(m, nums[i])
5148
}
52-
5349
exp := 1 // 1, 10, 100, 1000 ...
5450
R := 10 // 10 digits
55-
5651
aux := make([]int, len(nums))
57-
5852
for (m / exp) > 0 { // Go through all digits from LSB to MSB
5953
count := make([]int, R)
60-
6154
for i := 0; i < len(nums); i++ {
6255
count[(nums[i]/exp)%10]++
6356
}
64-
6557
for i := 1; i < len(count); i++ {
6658
count[i] += count[i-1]
6759
}
68-
6960
for i := len(nums) - 1; i >= 0; i-- {
7061
tmp := count[(nums[i]/exp)%10]
7162
tmp--
7263
aux[tmp] = nums[i]
64+
count[(nums[i]/exp)%10] = tmp
7365
}
74-
7566
for i := 0; i < len(nums); i++ {
7667
nums[i] = aux[i]
7768
}
7869
exp *= 10
7970
}
80-
8171
maxValue := 0
8272
for i := 1; i < len(aux); i++ {
8373
maxValue = max(maxValue, aux[i]-aux[i-1])
8474
}
85-
8675
return maxValue
8776
}
8877

leetcode/0164.Maximum-Gap/164. Maximum Gap_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ func Test_Problem164(t *testing.T) {
4949
para164{[]int{2, 435, 214, 64321, 643, 7234, 7, 436523, 7856, 8}},
5050
ans164{372202},
5151
},
52+
53+
{
54+
para164{[]int{1, 10000000}},
55+
ans164{9999999},
56+
},
5257
}
5358

5459
fmt.Printf("------------------------Leetcode Problem 164------------------------\n")

website/content/ChapterFour/0164.Maximum-Gap.md

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,12 @@ Explanation: The array contains less than 2 elements, therefore return 0.
5151

5252
package leetcode
5353

54-
// 解法一
54+
// 解法一 快排
5555
func maximumGap(nums []int) int {
5656
if len(nums) < 2 {
5757
return 0
5858
}
5959
quickSort164(nums, 0, len(nums)-1)
60-
6160
res := 0
6261
for i := 0; i < len(nums)-1; i++ {
6362
if (nums[i+1] - nums[i]) > res {
@@ -88,53 +87,51 @@ func quickSort164(a []int, lo, hi int) {
8887
quickSort164(a, p+1, hi)
8988
}
9089

91-
// 解法二
90+
// 解法二 基数排序
9291
func maximumGap1(nums []int) int {
93-
9492
if nums == nil || len(nums) < 2 {
9593
return 0
9694
}
97-
9895
// m is the maximal number in nums
9996
m := nums[0]
10097
for i := 1; i < len(nums); i++ {
10198
m = max(m, nums[i])
10299
}
103-
104100
exp := 1 // 1, 10, 100, 1000 ...
105101
R := 10 // 10 digits
106-
107102
aux := make([]int, len(nums))
108-
109103
for (m / exp) > 0 { // Go through all digits from LSB to MSB
110104
count := make([]int, R)
111-
112105
for i := 0; i < len(nums); i++ {
113106
count[(nums[i]/exp)%10]++
114107
}
115-
116108
for i := 1; i < len(count); i++ {
117109
count[i] += count[i-1]
118110
}
119-
120111
for i := len(nums) - 1; i >= 0; i-- {
121112
tmp := count[(nums[i]/exp)%10]
122113
tmp--
123114
aux[tmp] = nums[i]
115+
count[(nums[i]/exp)%10] = tmp
124116
}
125-
126117
for i := 0; i < len(nums); i++ {
127118
nums[i] = aux[i]
128119
}
129120
exp *= 10
130121
}
131-
132122
maxValue := 0
133123
for i := 1; i < len(aux); i++ {
134124
maxValue = max(maxValue, aux[i]-aux[i-1])
135125
}
136-
137126
return maxValue
138127
}
139128

129+
func max(a int, b int) int {
130+
if a > b {
131+
return a
132+
}
133+
return b
134+
}
135+
136+
140137
```

0 commit comments

Comments
 (0)