最近在准备找工做,刷了 LeetCode 一百多题,还在入门阶段。在学习新的解题技巧的同时,准备写一个系列总结概括本身碰到过的刷题套路和思考,做为对本身学习过程的记录。前端
因为本身主要找前端开发,而且对 JS 比较熟悉,刷题语言采用 JS。git
目前笔记结构还比较混乱,会随着刷题进程不断完善。github
全系列文章也可访问这里数组
常须要遍历。下述方法也多适用于须要遍历的字符串有关问题。学习
每循环一层时间复杂度便增长一个量级。 技巧:使用Hashmap,查找时间复杂度为 O(1),占用 O(n) 空间ui
例: (Two Sum) [leetcode.com/problems/tw…]spa
var twoSum = function (nums, target) {
let record = new Map();
for (const [index, num] of nums.entries()) {
let compliment = target - num;
// if found the pair
if (record.has(compliment)) { // 若是找到了 compliment (说明以前存过),则返回两个坐标
return [record.get(compliment), index];
}
record.set(num, index); // 若是没找到,则记录当前数的位置,以便以后查找
}
};
复制代码
使用两个指针对数组进行遍历。 时间复杂度为 O(n)。 一般须要一个判断条件来决定如何移动指针。指针
常见条件:code
使用场景排序