剑指 Offer II 059. 数据流的第 K 大数值

2022-07-05  本文已影响0人  邦_

想到的最直接的。。 不过既然前边的都排好顺序了 是可以优化的

class KthLargest {

    var array:[Int]
    var m:Int

    
    init(_ k: Int, _ nums: [Int]) {
        m = k
        array = nums

    }
    
    func add(_ val: Int) -> Int {
        
        array.append(val)
        array.sort(by: >)
        return array[m - 1]
        
    }
}

优化版本。。 只维护k个的数组


class KthLargest {

    var array:[Int]
    var m : Int
    
    init(_ k: Int, _ nums: [Int]) {
        var tempArray = nums
        tempArray.sort(by:>)
        array = []
        m = k
        var length = nums.count
        if length > 0 {
            if length > k {
                length = k
            }
            for i in 0...length-1  {
                array.append(tempArray[i])
            }
        }
       
    }
    
    func add(_ val: Int) -> Int {
        array.append(val)
        array.sort(by: >)
        if array.count > m {
            array.removeLast()
        }
        return array.last!

    }
}



上一篇 下一篇

猜你喜欢

热点阅读