刷题目录总结

排序

Java如何生成长度为n,范围为[l, r]的随机整数数组

什么是稳定排序,什么是非稳定排序

计数排序入门
什么是计数排序
桶排序
排序算法:桶排序、计数排序、基数排序

奇偶排序算法

荷兰国旗问题
漫画:什么是快速排序

如何构建一个大根堆
堆排序算法

两路归并排序
归并排序

排序算法之选择排序

Jave实现排序算法:冒泡排序

Java实现排序算法:直接插入排序
希尔排序:步长为2时java实现—直接排序的升级版

Java使用数组实现栈
Java使用链表实现栈
面试题09. 用两个栈实现队列
面试题 03.04. 化栈为队

单调栈:

队列

933. 最近的请求次数

链表

203. 移除链表元素

  • 要求:删除链表中值为val的元素
  • 条件:已知链表头节点&&val
  • 总结:因为这题没有说val是唯一的,所以必须遍历全部元素
    • 构建一个新链表:遍历元素,如果元素等于val,就跳过,否则作为新链表的值 【】
    • 构建一个新链表,dummp = new ListNode(-1),dummp.next = head,pre = dummy,cur = head。当cur不为空时循环: 判断cur的值,如果值为val,令pre.next = cur.next,cur=cur.next, ,如果不为val,pre = cur, cur=cur.next,

237. 删除链表中的节点|剑指 Offer 18. 删除链表的节点|面试题 02.03删除中间节点

  • 要求:删除链表中间的某个节点
  • 条件:只能访问要删除的节点
  • 总结:一句话,杀人灭口的最好方法

面试题 02.01. 移除重复节点

  • 要求:删除未排序链表中的重复节点
  • 条件:已知链表头节点
  • 总结:
    • 常规解法是使用map或者set储存已经出现的元素,如果出现了就删除
    • 如果不使用缓冲区,可以使用冒泡排序的思想渐渐扩大缓冲区

82. 删除排序链表中的重复元素 II
83. 删除排序链表中的重复元素

  • 要求:删除排序链表中的重复节点

  • 条件:已知链表头节点

  • 总结:一个cur指针指向head。当cur和cur.next都不为空【表示还有比较区间】时,比较当前节点和当前节点的下一个节点的值,如果相等就让cur指向当前节点的下下个节点,然后cur与下下个节点比较。。。如果当前节点与下一个节点不相等,就移动cur。


141. 环形链表

  • 要求:判断链表是否有环
  • 总结:快慢指针

876. 链表的中间结点

  • 要求:返回链表的中间节点
  • 总结:快慢指针

剑指 Offer 22. 链表中倒数第k个节点| 面试题 02.02返回倒数第 k 个节点

  • 要求:返回链表的倒数第k个节点
  • 总结:快慢指针

面试题 02.07. 链表相交|剑指 Offer 52两个链表的第一个公共节点|160. 相交链表

  • 要求:返回链表的相交节点
  • 总结:快慢指针

剑指 Offer 24反转链表 | 206 反转链表
234. 回文链表|面试题 02.06 回文链表


21. 合并两个有序链表

链表所有的简单题都做完了

位运算

题目 技巧 相似的题目 q其他
1. 两数之和 暴力、hash
2. 两数相加 链表、各位加法 445. 两数相加 II
3. 无重复字符的最长子串 暴力、队列、双指针、滑动窗口 933. 最近的请求次数、、
7. 整数反转 模拟 易错题
20. 有效的括号
21. 合并两个有序链表
24. 两两交换链表中的节点
82. 删除排序链表中的重复元素 II 83. 删除排序链表中的重复元素
83. 删除排序链表中的重复元素 82. 删除排序链表中的重复元素 II
86. 分隔链表
92. 反转链表 II
108. 将有序数组转换为二叉搜索树 易错题
109. 有序链表转换二叉搜索树
136. 只出现一次的数字 SET,异或 268. 缺失数字、、389. 找不同
138. 复制带随机指针的链表 递归、哈希、迭代
143. 重排链表
147. 对链表进行插入排序
148.排序链表 归并
160. 相交链表 栈、链表、双指针、遍历
169. 多数元素 排序取中、哈希计数、随机取数统计次数、摩根投票法 [1287. 有序数组中出现次数超过25%的元素]、、[面试题 17.10. 主要元素]
190. 颠倒二进制位 模拟位操作,分治法待研究 易错题
191. 位1的个数 调用库函数、字符串模拟,位操作 面试题15. 二进制中1的个数
203. 移除链表元素
206. 反转链表 双指针、递归、头插法
231. 2的幂 模拟、位运算 326. 3的幂、、342. 4的幂
234. 回文链表 使用栈、反转整个链表,反转半个链表 9. 回文数
237. 删除链表中的节点
268. 缺失数字 数学、异或、排序 136. 只出现一次的数字、、389. 找不同
326. 3的幂 递归、循环、查表、基准转换 231. 2的幂、、342. 4的幂
328. 奇偶链表
342. 4的幂 递归、循环、查找、位运算 231. 2的幂、、326. 3的幂
389. 找不同 位运算、map、桶计数、数学 268. 缺失数字 java中浮点数比较就是个坑
445. 两数相加 II 2. 两数相加
461. 汉明距离 位运算 面试题15. 二进制中1的个数
476. 数字的补数 位操作
509. 斐波那契数 循环、递归 递归树入门
693. 交替位二进制数 字符串,位运算模拟、位运算
709. 转换成小写字母 签到题
762. 二进制表示中质数个计算置位 顺序逻辑 这题不要想复杂了,easy
771. 宝石与石头 哈希,正则
817. 链表组件
844. 比较含退格的字符串 栈、循环 使用栈的时候很容易出错
876. 链表的中间结点 双指针
933. 最近的请求次数 队列(滑动窗口) 3. 无重复字符的最长子串
1019. 链表中的下一个更大节点 单调栈
1108. IP 地址无效化 容易混肴的api
1281. 整数的各位积和之差 模拟,递归
1287. 有序数组中出现次数超过25%的元素 遍历、数组本身特性 [169. 多数元素]、、[面试题 17.10. 主要元素]
1295. 统计位数为偶数的数字 模拟,数学
1313. 解压缩编码列表 模拟
1342. 将数字变成 0 的操作次数 模拟
1365. 有多少小于当前数字的数字 暴力,map,hash桶 这题有意思
1394. 找出数组中的幸运数 hash计数、桶计数、排序计数 [面试题 17.10. 主要元素] 先统计每个数的次数,然后在找到目标
1450. 在既定时间做作业的学生人数 水题
1431. 拥有最多糖果的孩子 脑子需要转一点点弯
判断一个数是偶数还是奇数 java中浮点数比较就是个坑
为什么位运算可以实现加法
面试题 01.03. URL化 一道坑人的题目
面试题 02.01. 移除重复节点 set以及冒泡删除 冒泡删除可以以看,set就是常规无聊的解法
面试题 02.02. 链表中倒数第k个节点 双指针、递归
面试题 02.03. 删除中间节点
面试题 02.04. 分割链表
面试题 02.05. 链表求和 2. 两数相加
面试题 02.06 回文链表 使用栈、反转半个链表、反转全部链表 反转半个链表很容易出错
面试题 02.07. 链表相交 栈、链表、双指针、遍历
面试题 05.07. 配对交换 位运算 先找出奇数位,再找出偶数位,然后交换
面试题 10.01. 合并排序的数组 双指针 易错
面试题15. 二进制中1的个数 二进制模拟,位运算
面试题15. 二进制中1的个数 调用库函数、字符串模拟,位操作 面试题15. 二进制中1的个数
面试题 16.01. 交换数字 异或、数学
面试题 16.07. 最大数值 位操作 相减,取出符号位—>数学运算
面试题 17.04. 消失的数字
面试题 17.10. 主要元素 map、摩根投票法 [169. 多数元素]、、[1287. 有序数组中出现次数超过25%的元素]
LCP 01. 猜数字
剑指 Offer 18. 删除链表的节点
面试题22. 链表中倒数第k个节点 双指针、递归
面试题24 反转链表 头插法、双指针、递归
递归之求阶乘 递归 递归树入门

你可能感兴趣的:(算法与数据结构)