Files
LeetCode-Go/leetcode/1675.Minimize-Deviation-in-Array/1675. Minimize Deviation in Array.go
2021-02-13 03:18:06 +08:00

41 lines
701 B
Go

package leetcode
func minimumDeviation(nums []int) int {
min, max := 0, 0
for i := range nums {
if nums[i]%2 == 1 {
nums[i] *= 2
}
if i == 0 {
min = nums[i]
max = nums[i]
} else if nums[i] < min {
min = nums[i]
} else if max < nums[i] {
max = nums[i]
}
}
res := max - min
for max%2 == 0 {
tmax, tmin := 0, 0
for i := range nums {
if nums[i] == max || (nums[i]%2 == 0 && min <= nums[i]/2) {
nums[i] /= 2
}
if i == 0 {
tmin = nums[i]
tmax = nums[i]
} else if nums[i] < tmin {
tmin = nums[i]
} else if tmax < nums[i] {
tmax = nums[i]
}
}
if tmax-tmin < res {
res = tmax - tmin
}
min, max = tmin, tmax
}
return res
}