LeetCode 1387. 按幂值对整数进行排序
剛從南湖群峰下山,原本受了現在好像又胖回去了(哭
[
按幂值排序整数 - LeetCode
整数 x 的幂定义为使用以下步骤将 x 转换为 1 所需的步骤数:对于…
leetcode.com
](https://leetcode.com/problems/sort-integers-by-the-power-value/)
常量步骤 = (x) => {
让结果 = 0
而(x!== 1){
x = x%2 ? 3*x + 1 : x/2
结果++
}
返回结果
} 常量比较器 = (a, b) => {
返回 a[1] === b[1] ? a[0] - b[0] : a[1] - b[1]
} const partition = (low, high, Arr) => {
let pivot = Arr[high] // 使枢轴成为最后一个元素
让慢=低
对于(让快=低;快<高;快++){
如果(比较器(Arr [fast],pivot)< 0){
[Arr[慢],Arr[快]] = [Arr[快],Arr[慢]]
慢++
}
}
[Arr[慢],Arr[高]] = [Arr[高],Arr[慢]]
返回缓慢
} 常量快速选择 = (Arr,k) => {
让低 = 0
让高 = Arr.length -1
while (low < high) { // 使用快速排序
让 indexOfPivot = 分区(低,高,Arr)
如果 (indexOfPivot < k) 低 = indexOfPivot + 1
else if (indexOfPivot > k) high = indexOfPivot - 1
else break //case k
}
返回 Arr[k]
} const getKth = (lo, hi, k) => {
if (lo === hi) 返回 lo
让 powerArray = []
for (让 i = lo; i < hi+1; i++) {
poweredArray.push([i, steps(i)])
}
返回 quickSelect(poweredArray, k-1)[0]
};
参考: Comparison Sort: Quick Sort(快速排序法)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/14370/32190501
标签:Arr,排序,lo,high,幂值,indexOfPivot,1387,LeetCode From: https://www.cnblogs.com/amboke/p/16656701.html