Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

学习笔记

刷题不能只刷一遍, 遇到题目先思考一分钟想出各种思路,没有思路不要死磕,立刻看题解 官方题解不一定是最优解,可以看比较热门点赞数较高的题解,同时也可以去到国际站看国外的题解 每天刷题,不追求新题全会,但是要保证刷过的题都能做出来,每天新旧题占比2:8 敢于背题,不只是理解完事,动手才是王道!

时间复杂度、空间复杂度: 养成每次对自己写出来的代码都进行时间复杂度和空间复杂度的分析 递归中常见的四种情形, 1.二分查找, 2.二叉树遍历, 3.有序二维矩阵二分查找 4.归并排序

链表、数表、跳表的特性; 数组:插入、删除是o(n),lookup是o(1) 链表:插入、删除是o(1),lookup是o(n) 跳表: 对标平衡树和二分查找。原始的有序序列添加多级索引,升维+空间换时间

栈和队列: 栈先进后出(FILO)、队列先进先出(FIFO) 实际上更多使用的是双端队列,熟悉C++ queue(STL queue)用法

实战题目:

  1. 移动零 双指针法,块指针i遍历每个元素,慢指针j只停留在非0元素;
  2. 盛水最多的容器 A暴力法,两层循环遍历出最大面积(超时) B 双指针法,头尾指针夹逼,因为最大面积只会出现在两指针间,当左右指针重合时结束
  3. 三数之和 A暴力法,套三层循环遍历出三个数的和为零(超时) B 双指针法,一层循环i+头尾指针夹逼相加,如果和小于0则右移左指针(left++),大于0则左移右指针(right--),要注意指针遇到项重复要剔除
  4. 合并两个有序链表 A 递归 按照递归模板先要设立好终止条件防止死循环,然后设立好当前层的递归逻辑,进入下一层 B 迭代 画出迭代图理清迭代路线