代码改变世界

[LeetCode] 系统刷题8_Data Structure

2019-05-13 04:21  Johnson_强生仔仔  阅读(286)  评论(0编辑  收藏  举报

Linear data structure

  • Queue          used for BFS most of time
    • O(1) for push
    • O(1) for Pop
    • O(1) for Top
  • Stack .      得到第一个左边比该点小的,第一个右边比该点小的  => strict increasing stack
    • O(1) for push
    • O(1) for pop
    • O(1) for top

    [LeetCode] 155. Min Stack_Easy tag: stack

    [LeetCode] 232. Implement Queue using Stacks_Easy tag: stack

    [LeetCode] 84. Largest Rectangle in Histogram_Hard tag: stack

    [LeetCode] 654. Maximum Binary Tree_Medium tag: stack

      [LeetCode] 20. Valid Parentheses_Easy tag: Stack

    [LeetCode] 150. Evaluate Reverse Polish Notation_Medium tag: Stack

    [LeetCode] 224. Basic Calculator_Hard tag: stack

    [LeetCode] 895. Maximum Frequency Stack_Hard tag: stack

    [LeetCode] 975. Odd Even Jump_Hard tag: stack, dynamic programming

    [LeetCode] 2334. Subarray With Elements Greater Than Varying Threshold_Hard tag: dp, stack

    

以下有待整理

    

  • Hash
    • O(1) for insert
    • O(1) for delete
    • O(1) for find
    • find the most frequent items:      freq = max(d.values());    return [k for k in d if d[k] == freq]

    [LeetCode] 128. Longest Consecutive Sequence_Hard tag: Hash

    [LeetCode] 146. LRU Cache_Hard tag: Hash, Linked List

    [LeetCode] 929. Unique Email Addresses_Easy tag: Hash

Tree data structure

  • Heap   利用dynamimc array 去实现
>>> a = [2,7,4,0,8,12,14,13,10,3,4]
>>> heapify(a)
>>> b = a[:]
>>> heappushpop(a, -1)
-1
>>> heapreplace(b, -1)
0

 

待整理 ------

Swim in Rising Water - heap tag

 

待整理 -------

QuickSort or quickselect using two pointers. 

 

 Union find: