[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
以下有待整理
- 1504. Count Submatrices With All Ones
- 2282. Number of People That Can Be Seen in a Grid (solution里面有很多类似的题目https://leetcode.com/problems/beautiful-towers-ii/solutions/4082819/java-c-python-stack-o-n/ )
- 1944. Number of Visible People in a Queue
- 2863. Maximum Length of Semi-Decreasing Subarrays
- 2289. Steps to Make Array Non-decreasing(solution里面有很多类似的题目https://leetcode.com/problems/steps-to-make-array-non-decreasing/solutions/2085864/java-c-python-stack-dp-explanation-poem/ )
- 2434. Using a Robot to Print the Lexicographically Smallest String
- Next Greater Element I
- Largest Rectangle in Histogram
- Trapping Rain Water
- 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
-
- heapq.heapify(nums) will get the min heap
- O(1) get the maximum/minimum, mininum: nums[0]
- O(lg n) insert, heapq.push(nums, val)
- O(lg n) delete, heapq.pop(nums) pop the head, the minimum number.
- Median Number
- Merge k sorted lists
- [LeetCode] 703. Kth Largest Element in a Stream_Easy tag: Heap
- [LeetCode] 253. Meeting Rooms II_Medium tag: Heap
- [LeetCode] 295. Find Median from Data Stream_hard tag: Heap Need to update the follow up question?
- [LeetCode] 857. Minimum Cost to Hire K Workers_Hard tag: sort, heap
待整理 ------
Swim in Rising Water - heap tag
待整理 -------
QuickSort or quickselect using two pointers.
- [LeetCode] 215. Kth Largest Element in an Array_Medium tag: Array, Heap
- [LeetCode] 347. Top K Frequent Elements_Medium tag: Array, Heap
- [LeetCode] 973. K Closest Points to Origin_Medium tag: Sort
- Trie(Prefix tree)
Union find:
- [LeetCode] 261. Graph Valid Tree _ Medium tag: BFS
- [LeetCode] 684. Redundant Connection _ Medium tag: Union Find
- TODO: [LeetCode] 399. Evaluate Division_Medium tag: DFS