一、数据结构分类
1.一维数据结构
基础:数组、链表
高级:栈、队列、双端队列、集合、映射等
2.二维数据结构
基础:树、图
高级:二叉查找树、平衡树、红黑树、堆、并查集、字典树等
3.特殊数据结构
位运算、布隆过滤器、LRU cache
二、算法的分类
1.基础算法
- branch:if-else、switch
- Iteration: for、while
- 递归
2.高级算法
- 搜索:深度优先搜索、广度优先搜索
- 动态规划
- 二分查找
- 贪心
- 数学、几何
三、自顶向下的编程方式
1.什么是自顶向下的编程方式
所谓的自顶向下的编程方法,本质上就是编写程序的视角从整体的宏观性逐层进入具体的微观性的一种编程思想。我们编写程序时一开始不用思考得事无巨细,把所有细节都想清楚;也不要面条式的想到哪里写到哪里。而应该是自顶向下的,从一个大的粗的核心的任务开始,逐级细分,最后再完成最底层的具体实现。
2.举例
class Solution {
public Boolean isPalindrome(String str){
// 核心任务分解
// 1.过滤掉非字母和非数字
String filterStr=filterNoCharAndNum(str);
// 2.翻转字符串
String reverseStr=reverse(filterStr);
// 3.与过滤后的字符串比较并返回结果
return filterStr.equalsIgnoreCase(reverseStr);
}
private String filterNoCharAndNum(String str){
return str.replaceAll("[^A-Za-z0-9]","");
}
private String reverse(String str){
return new StringBuilder(str).reverse().toString();
}
}