36 lines
556 B
Go
36 lines
556 B
Go
package q3507
|
|
|
|
import "math"
|
|
|
|
func minimumPairRemoval(nums []int) int {
|
|
var nOp int
|
|
var op = func() bool {
|
|
minP, minSum := 0, math.MaxInt
|
|
sorted := true
|
|
for i := range len(nums) - 1 {
|
|
sum := nums[i] + nums[i+1]
|
|
if sum < minSum {
|
|
minSum = sum
|
|
minP = i
|
|
}
|
|
if sorted && nums[i+1] < nums[i] {
|
|
sorted = false
|
|
}
|
|
}
|
|
if sorted {
|
|
return false
|
|
}
|
|
|
|
nums[minP] += nums[minP+1]
|
|
copy(nums[minP+1:], nums[minP+2:])
|
|
nums = nums[:len(nums)-1]
|
|
return true
|
|
}
|
|
|
|
for op() {
|
|
nOp++
|
|
}
|
|
return nOp
|
|
}
|
|
|
|
var _ = minimumPairRemoval
|