Google – Moving Window Max Median



Google – Moving Window Max Median

找moving window的最大median.

[Analysis]
这道题和leetcode里的find median from data stream不一样,data stream是不需要删除元素的,维护两个heap,一直不停的往里插入就可以了。

但是moving window需要删除元素,那么heap就不是很好的选择了,因为Heap根本就不支持删除操作,硬要从底层来删的话,复杂度就上去了。

[Solution]
这道题最好的方法是用hash heap,这样删除操作可以在O(1)时间完成,插入和rebalance都是O(logm),m是window size。get Median也是O(1)时间。

还有一种方法是用两个bst,不过实现起来略显复杂,首先要维护两个变量表示第一个bst的最大值和第二个bst的最小值,这样才能确保get median的时间是O(1)。这两个变量在每次插入删除的时候都需要更新。

但用bst的话,插入删除都是O(logm),还没有hash heap好。


Read full article from Google – Moving Window Max Median


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts