数组范围内的最小值

时间:2019-01-29 09:42:58

标签: swift

我有一个价格清单,想找到不包含第一个元素的最低价格(这是HackerRank另一个问题的子集)。

我的版本太慢并且超时。我怀疑这是由于我的ArraySlice造成的。

这是我的(工作中的)代码:

94%

是否有一个性能更好的版本,也许是不使用ArraySlice的版本?

4 个答案:

答案 0 :(得分:5)

只需使用dropFirst()函数。

var array = [1,8,2,4,3]
var array2 = array.dropFirst() // Returns a subsequence containing all but the first element of the sequence.
array2.min() // 2

答案 1 :(得分:1)

为什么不保持简单

func calculateMins(prices: [Int]) {
    var min = Int.max
    for i in 1..<prices.count {
        if prices[i] < min { min = prices[i] }
    }
    print(min)    
}

答案 2 :(得分:1)

您几乎没有办法解决此问题。

//Default way
prices.dropFirst().min()

//Functional way
prices.dropFirst().reduce(Int.max, { min($0, $1) })

答案 3 :(得分:0)

您还可以使用suffix,它与dropFirst完全相同,如果数组为空,此版本可能会崩溃。

array.suffix(from: 1).min()