当前位置: 首页 > news >正文

Golang | Leetcode Golang题解之第462题最小操作次数使数组元素相等II

题目:

题解:

func partition(a []int, l, r int) int {x := a[r]i := l - 1for j := l; j < r; j++ {if a[j] <= x {i++a[i], a[j] = a[j], a[i]}}a[i+1], a[r] = a[r], a[i+1]return i + 1
}func randomPartition(a []int, l, r int) int {i := rand.Intn(r-l+1) + la[i], a[r] = a[r], a[i]return partition(a, l, r)
}func quickSelect(a []int, l, r, index int) int {q := randomPartition(a, l, r)if q == index {return a[q]}if q < index {return quickSelect(a, q+1, r, index)}return quickSelect(a, l, q-1, index)
}func minMoves2(nums []int) (ans int) {rand.Seed(time.Now().UnixNano())x := quickSelect(nums, 0, len(nums)-1, len(nums)/2)for _, num := range nums {ans += abs(num - x)}return
}func abs(x int) int {if x < 0 {return -x}return x
}

http://www.mrgr.cn/news/45040.html

相关文章:

  • Python | Leetcode Python题解之第463题岛屿的周长
  • Sharding 分页原理分析
  • 拆一个烙铁的射频电源
  • ctf.bugku - 本地管理员
  • 30 树 · 二叉树
  • 动态规划算法专题(四):子串、子数组系列
  • Bianchi模型、python计算及ns3验证
  • C++笔记之原子操作
  • ctf.bugku - SOURCE
  • Linux系统创建新分区并挂载的方法
  • Maven、Git
  • gstreamer 内存 alloctor 介绍
  • C语言编译与链接(29)
  • 观察者(observer)模式
  • 【动态规划-4.2 最长递增子序列(LIS)】力扣300. 最长递增子序列
  • C++核心编程和桌面应用开发 第八天(继承)
  • 【玩转 JS 函数式编程_009】3.1.3 JavaScript 函数式编程筑基之:将函数视为一等对象
  • 银从法律法规_03
  • [OS] EXPORT_SYMBOL()
  • 前端推荐书单