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];
}