如何高效学习
如何系统学习数据结构与算法
- 注重预习
- 课堂互动
- 课后作业(切题方法)
精通一个领域
- 切碎知识点
- 刻意练习
- 反馈
切碎知识点
数据结构
算法(八大点)
三个基础+5个高级
刻意练习
一只脚在舒适区,一只脚在…
切题四件套
- Clarification(看清题目)
- Possible Solutions(所有能想到的解法)
- compare(time/spare)
- optimal(加强)
- Coding
- Test cases
五毒神掌(五遍刷题法)
1.第一遍:读题+思考
- 5~15分钟思考
- 不会直接看解法看高赞题解,选择比较好的题解,
- 背诵和默写好的解法
- 马上写–>Leetcode提交
- 多种解法比较体会–>优化
2.第二遍:
不看别人的代码,马上自己写下来,进行debug(自己开一个浏览器,空白的文件写代码)
写完之后->LeetCode提交,直到通过的状态
一个题目的话有多种的解法,多去体会。—>优化
3.第三遍:
过了24小时之后,回过头来做从重复的题目
不同解法的熟练程度—>专项练习
4.第四遍:
过了一周之后:反复回来进行练习相同的题目
5.第五遍:
面试前一周恢复性训练
反馈
- 即使反馈
- 正面反馈()
- 反面反馈
做算法题最大的误区:只做一遍
自顶向下的编程方式
clean code
最关键函数写在上面
下载VSCode,配置node环境,下载leetcode插件
验证回文串
class Solution {
public boolean isPalindrome(String s) {
//高层次(主干)逻辑
//1.filter out number & chart; 2. reverse and cmopare
String filteredS = _filterNonNumberAndChar(s);//去除其他字符
//String reversedS = _reverseString(filteredS);//reverse
//return reversedS.equalIgnoreCase(filteredS);//比较
return _reverseString(filteredS).equalsIgnoreCase(filteredS);
}
private String _reverseString(String s){
return new StringBuilder(s).reverse().toString();
}
private String _filterNonNumberAndChar(String s){
return s.replaceAll("[^A-Za-z0-9]", "");//用正则表达式,把需需要的换成空
}
}