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