我的密钥是复合密钥
public struct Mykey{
public int index;
public string known1;
public string known2;
}
我希望通过known1和known2得到最大索引的密钥,我的代码如下
Dictionary<key, value> dict = new Dictionary<key, value>();
// below O(n) operation
dict.Where( k => (k.Key.known1 =="str1") && (k.Key.known2=="str2")).Max(k => k.Key.index);
MSDN:Dictionary获取或设置此属性的值接近O(1)操作
dict[key] = item ;// MSDN sample O(1) key known
是否有可能使用方法O(1)来获取MSDN样本等未知复合密钥的最大索引?
答案 0 :(得分:1)
否,如果您想在现有词典上进行此操作。
作为一种选择 - 通过你的&#34;已知&#34;建立额外的索引(字典)。每个键的键和存储排序列表(或堆)的一部分。它将搜索为O(1),但添加/删除将达到O(log N)以支持排序顺序。