LeetCode
LeetCode
一个 map 存储数据,一个 list 当 LRU 的队列,想要在 list 中快速删除对应的值可以考虑在使用个 map 记录对应 list 的 node。
方法一:可以考虑成数组,只不过需要坐标转换成 matrix O(log(m*n))
方法二:可以从右上角开始,小于就往左,大于就往下。O(m+n)
考虑好边界,相等处理。
114. Flatten Binary Tree to Linked List
如果使用 O(n) space 比较简单,前序遍历回放即可。
O(1) space 的话,利用递归思想 flatten(left), flatten(right),最后再将 right, left 合并。
199. Binary Tree Right Side View
层序遍历,每层取最后一个元素
2462. Total Cost to Hire K Workers
使用两个堆一个维护前面的,一个维护后面的最小 cost
需要注意两个堆中元素不能重复即(2*candidates+k<=n),如果元素不足,而可以直接排序取。
1329. Sort the Matrix Diagonally
对角线特性,同一对角线的元素 i-j 都相等,可以先收集,排序,放回。
字典运用
十进制 转 X 进制
n = a * (x)^5 + b * (x)^4 + c * (x)^3 + d * (x)^2 + e * (x)^1 + f * (x)^0
本质就是求 abcdef,可以每次求出 f(n%x),然后 n-f,n//=x 就是下一个
2007. Find Original Array From Doubled Array
首先排序,每次配对最小的元素