[LeetCode] 数据结构 Ordered Dictionary - LinkedHashMap

如果对于以下操作,我们都希望是O(1)的时间复杂度,如何实现:

  1. Insert the key
  2. Get the key / Check if the key exists
  3. Delete the key
  4. Return the first / or the last added key/value

前三种方式可以用HashMap来实现,第四种方式可以用LinkedList来实现。

在Java中,有个类型叫LinkedHashMap,相当于HashMap + LinkedList。LinkedHashMap 继承了 HashMap,同时能够做到按照插入顺序或者访问顺序进行迭代。

LinkedHashMap有两种排序方式:insertion-ordered 或者 access-order。默认是 insertion-ordered。唯一使用 access-order 的构造方式是:

public LinkedHashMap(int initialCapacity, // 初始大小
                     float loadFactor, // 加载因子
                     boolean accessOrder) // 排序方式

涉及到的题目:
340 Longest Substring with At Most K Distinct Characters
https://leetcode.com/problems/longest-substring-with-at-most-k-distinct-characters/
146 LRU Cache
https://leetcode.com/problems/lru-cache/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。