• LeetCode


    要求:

    在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

    使用快排进行解决。

     1 class Solution {
     2     func findKthLargest(_ nums: [Int], _ k: Int) -> Int {
     3         
     4         let quickSortResult = quickSort(nums, 0, nums.count - 1)
     5         let resultNums = quickSortResult.0
     6         let keyIndex = quickSortResult.1
     7         
     8         if keyIndex + 1 == k {
     9             
    10         }else if keyIndex + 1 > k {
    11             return findKthLargest(Array(resultNums[0..<keyIndex]), k)
    12         }else {
    13             let index = resultNums.index(after: keyIndex)
    14             let endIndex = resultNums.endIndex
    15             return findKthLargest(Array(resultNums[index..<endIndex]), k - keyIndex - 1)
    16         }
    17         return resultNums[keyIndex]
    18     }
    19     
    20     private
    21     func quickSort(_ nums: [Int], _ left: Int, _ right: Int) -> ([Int], Int) {
    22         var numsArray = nums
    23         var i = left
    24         var j = right
    25         let key = numsArray[i]
    26         
    27         while i != j {
    28             while j > i && numsArray[j] <= key {
    29                 j -= 1
    30             }
    31             numsArray.swapAt(i, j)
    32             
    33             while j > i && numsArray[i] >= key {
    34                 i += 1
    35             }
    36             numsArray.swapAt(i, j)
    37         }
    38         numsArray[i] = key
    39         return (numsArray, i)
    40     }
    41 }
  • 相关阅读:
    守护线程Daemon的理解
    Activity并行网关和排他网关
    Activity快速入门理解
    java虚拟机内存区域理解
    Maven的使用
    Mybatis拦截器(插件实现原理)
    網絡上好的博客收集
    jdbc 设置连接支持多条sql
    python 多环境安装
    Linux 系统命令
  • 原文地址:https://www.cnblogs.com/kaisi/p/10135483.html
Copyright © 2020-2023  润新知