力扣一刷记录

朝颜的力扣一刷记录
学习路线:代码随想录 https://www.programmercarl.com
以及一些自言自语…

1. 数组

1. 1. 二分法

典型例题

  • 搜索插入位置
  • 在排序数组中查找元素的第一个和最后一个位置
  • x的平方根
  • 有效的完全平方数

方法论

  1. 采用典型的二分查找算法;
  2. 采用多个二分查找,组合式求解;
  3. 跳出“查找数组中的目标值”的思维,把二分查找的思想应用到其他题型。

1. 2. 双指针法

典型例题

  • 移除元素
  • 删除排序数组中的重复项
  • 移动零
  • 比较含退格的字符串
  • 有序数组的平方

方法论

  1. 采用双指针法,即快慢指针法;
  2. 需要灵活应用两个指针。

关键还是得多刷题,强化思维,因为数组的难点在于想法和实现

1. 3. 滑动窗口法

典型例题

  • 长度最小的子数组
  • 水果成篮【还没完成】
  • 最小覆盖子串【还没完成】

方法论

  1. 滑动窗口法;
  2. 滑动窗口法相当于是进阶版的更加灵活的双指针;
  3. 经常在题解看到滑窗法配合哈希表使用,学到那块的时候再来回顾一下。

1. 4. 模拟行为

典型例题

  • 螺旋矩阵
  • 螺旋矩阵II
  • 顺时针打印矩阵

方法论

  1. 要熟练螺旋矩阵中核心的循环;
  2. 要注意循环的边界。

一定要注意循环不变性;一定要从宏观到微观的思考算法的流程。不至于这回能符合这个输入,下回又不符合这个输入了

2. 链表

2. 1. 链表基础

典型例题

  • 移除链表元素
  • 设计链表

2. 2. 双指针法

典型例题

  • 翻转链表
  • 删除链表的倒数第N个节点
  • 链表相交
  • 环形链表II

2. 3. 行为模拟

典型例题

  • 两两交换链表中的节点

其实双指针的实现也是行为模拟

3. 哈希表

3. 1. 数组做哈希表

典型例题

  • 有效的字母异位词
  • 两个数组的交集
  • 赎金信

方法论

  1. 填充和删除数组相应位置值;
  2. 除构建存放字母出现次数的record[26]外,对应具体问题也可构建其它类似的record[]。

3. 2. unordered_set 做哈希表

典型例题

  • 快乐数

3. 3. unordered_map 做哈希表

典型例题

  • 两数之和
  • 四数相加II

数据结构相关理论知识要跟进学习

3. 4. 这一类用双指针更合适

典型例题

  • 三数之和
  • 四数之和

方法论

  1. 可以拓展至n数之和;
  2. 其方法时间复杂度为O(nn),用双指针降到O(n(n-1))。

4. 字符串

4. 1. 双指针法

典型例题

  • 反转字符串
  • 反转字符串II
  • 替换空格
  • 翻转字符串里的单词
  • 左旋转字符串

4. 2. KMP算法

典型例题

  • 实现strStr()
  • 重复的字符串

方法论

  1. KMP算法需要明白:什么是前后缀?为什么要得到最长相等前后缀?怎么构造前缀表【或者说next数组】?如何利用前缀表?

5. 栈与队列

学习ing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值