Welcome to My Blog
tree tree
二叉树 Tree 先问清楚是不是二叉树?二叉搜索树?子节点到父节点的指针? 大部分题目可以通过递归解决 掌握四种遍历树的方法inorder, preorder, postorder, level order 配合遍历的顺序,有可
2020-07-21
greedy greedy
贪心算法 排序!如果是内置数据结构,直接使用自定义排序。排序之后考虑能否使用binary search。 Arrays.sort(arr, new Comparator<int[]>() { public int compa
2020-07-21
list list
链表概况链表存储空间不一定连续,是临时分配的,所以不能像数组一样用索引提取元素。 大量链表问题可以使用额外数据结构简化。但是最优解一般不使用额外数据结构。 解题要点 单向/双向?有环/无环? 翻转链表、交换两个节点是基础 头节点有可能发生变
2020-07-21
graph graph
图 Graph 图形题不一定需要建图 如果需要建图,考虑边是否具有方向 考虑节点到本身是否有边 建图方式 邻接矩阵 Adjacency matrix space: O(|V|^2) search: O(1) 邻接表 Adj
2020-07-21
dp dp
动态规划 Dynamic Programming 检查能不能拆分成子问题,且是否会被求解多次 四大要素:状态,初始化,状态转移方程,结果 优化空间,规律交错的题目尝试声明两个变量来存(一维DP两种状态) 优化时间主要看内层循环的
2020-07-19
combination permutation combination permutation
Combination 如果需要返回的组合长度不一样,则需要在外层调用dfs时加循环 注意去重 time: O(2^n) int[] nums; List<List<Integer>> res = new ArrayLis
2020-07-19
string string
字符串 考虑使用HashMap进行计数 掌握substring, indexOf, isLetterOrDigit等常见方法 考虑转换成char[] 比较一定要使用equals 找符合条件子串,考虑滑动窗口法,关键在于找到合法起始点 KMP
2020-06-20
Computational Biology Computational Biology
References https://towardsdatascience.com/tagged/stats-ml-life-sciences ClusteringGenreHACSensitive to noise. Centroid
2020-06-16
math math
数学 考虑int溢出,除数为0,数字不能以0开头(0除外)等特殊情况。 考虑gcd,lcm 考虑二分搜索 Fast Power$x = a * b^n$, n is a positive integer, a and b can be
2020-06-14
arr arr
数组 考虑双向遍历数组 快慢指针应用:原数组上删除 用法:实质是快慢指针,其中一个做iterator,另一个做counter 双向双指针应用:原数组上rotate或者reverse,in place交换,求和 用法:前后两个指针分别向中
2020-05-19
stack-queue stack-queue
栈&队列 基本上结合其他问题考得比较多 需要实现特殊功能,考虑使用多个栈/队列 双端队列 Deque在java有现成接口,可以用LinkedList实现 单调栈 Mono Stack保证栈中数据是有序的,可以配合滑动窗口题使用
2020-05-16
binary search binary search
二分搜索 Binary Search 注意int溢出。 一种是根据index二分,一种是根据值二分。根据值二分的,要统计小于mid的个数,另外要注意mid到底是不是一个在范围之内的数。 返回之前最好再检测一遍是否符合要求。 如果不是
2020-05-16
1 / 2