3.1.17

3.1.17 #

解答 #

官方实现:https://algs4.cs.princeton.edu/31elementary/BinarySearchST.java.html

先通过二分查找大于等于 key 的键下标 i

如果 keys[i]key 相等则直接返回 keys[i], 否则返回 keys[i-1]

public TKey Floor(TKey key)
{
    if (key == null)
        throw new ArgumentNullException(nameof(key), "argument to Floor() is null");
    var i = Rank(key);
    if (i < _n && _keys[i].CompareTo(key) == 0)
        return _keys[i];
    if (i == 0)
        return default;
    return _keys[i - 1];
}

另请参阅 #

SymbolTable 库