不愧是阿里技术官,上线半个月Github星标60k!想搞好算法这两份刷法算题宝典千万不能错过!(1)

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Linked List

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

  • 巧妙的构造虚拟头结点。可以使遍历处理逻辑更加统一。

  • 灵活使用递归。构造递归条件,使用递归可以巧妙的解题。不过需要注意有些题目不能使用递归,因为递归深度太深会导致超时和栈溢出。

  • 链表区间逆序。第92题。

  • 链表寻找中间节点。第876题。链表寻找倒数第n个节点。第19题。只需要-次遍历就可以得到答案。

  • 合并K个有序链表。第21题,第23题。

  • 链表归类。第86题,第328题。

  • 链表排序,时间复杂度要求O(n * logn),空间复杂度0(1)。只有一种做法,归并排序,至顶向下归并。第148题。

  • 判断链表是否存在环,如果有环,输出环的交叉点的下标;判断2个链表是否有交叉点,如果有交叉点,输出交叉点。第141题,第142题,第160题。

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Segment Tree

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

  • 线段数的经典数组实现写法。将合并两个节点pushUp逻辑抽象出来了,可以实现任意操作(常见的操作有:加法,取max, min等等)。第218题,第303题,第307题,第699题。

  • 计数线段树的经典写法。第315题,第327题,第493题。

  • 线段树的树的实现写法。第715题,第732题。

  • 区间懒惰更新。第218题,第699题。

  • 离散化。离散化需要注意一个特殊情况:假如三个区间为[1,10] [1,4] [6,10],离散化后x[1]=1,x[2]=4,x[3]=6,x[4]=10。第一个区间为[1,4],第二个区间为[1,2],第三个区间为[3,4],这样一来,区间一=区间二+区间三,这和离散前的模型不符,离散前,很明显,区间一>区间二+区间三。正确的做法是:在相差大于1的数间加一个数,例如在上面1 46 10中间加5,即可x[1]=1,x[2]=4,x[3]=5,x[4]=6,x[5]=10。这样处理之后,区间一是1-5,区间二是1-2,区间三是4-5。

  • 灵活构建线段树。线段树节点可以存储多条信息,合并两个节点的pushUp操作也可以是多样的。第850题,第1157题。

Sliding Window

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

  • 双指针滑动窗口的经典写法。右指针不断往右移,移动到不能往右移动为止(具体条件根据题目而定)。当右指针到最右边以后,开始挪动左指针,释放窗口左边界。第3题,第76题,第209题,第424题,第438题,第567题,第713题,第763题,第845题,第881题,第904题,第978题,第992题,第1004题,第1040题,第1052题。

Sort

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

  • 深刻的理解多路快排。第75题。

  • 链表的排序,插入排序(第147题)和归并排序(第148题)

  • 桶排序和基数排序。第164题。

  • “摆动排序”。第324题。

  • 两两不相邻的排序。第767题,第1054题。

  • “饼子排序”。第969题。

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Union Find

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

  • 灵活使用并查集的思想,熟练掌握并查集的模板,模板中有两种并查集的实现方式,-种是路径压缩+秩优化的版本,另外一种是计算每个集合中元素的个数+最大集合元素个数的版本,这两种版本都有各自使用的地方。能使用第一类并查集模板的题目有:第128题,第130题,第547题,第684题,第721题,第765题,第778题,第839题,第924题,第928题,第947题,第952题,第959题,第990题。能使用第二类并查集模板的题目有:第803题,第952题。第803题秩优化和统计集合个数这些地方会卡时间,如果不优化,会TLE。

  • 并查集是一种思想,有些题需要灵活使用这种思想,而不是死套模板,如第399题,这一题是stringUnionFind,利用并查集思想实现的。这里每个节点是基于字符串和map的,而不是单纯的用int节点编号实现的。

  • 有些题死套模板反而做不出来,比如第685题,这一题不能路径压缩和秩优化,因为题目中涉及到有向图,需要知道节点的前驱节点,如果路径压缩了,这一题就没法做了。这一题不需要路径压缩和秩优化。

  • 灵活的抽象题目给的信息,将给定的信息合理的编号,使用并查集解题,并用map降低时间复杂度,如第721题,第959题。

  • 关于地图,砖块,网格的题目,可以新建一个特殊节点,将四周边缘的砖块或者网格都union()到这个特殊节点上。第130题,第803题。

  • 能用并查集的题目,一般也可以用DFS和BFS解答,只不过时间复杂度会高一点。

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Leetcode题解

==========

4. Median of Two Sorted Arrays

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

17. Letter Combinations of a Phone Num ber

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

51. N-Queens

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

84. Largest Rectangle in Histogram

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

114. Flatten Binary Tree to Linked List

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

199. Binary Tree Right Side View

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

237. Delete Node in a Linked List

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

463. lsland Perimeter

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

500. Keyboard Row

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

1105. Filling, Bookcase Shelves

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

1145. Binary Tree Coloring Game

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

1302. Deepest Leaves Sum

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

第二份力扣算法刷题宝典(标星68k)

==================

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

第一章、动态规划系列

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

背包问题之零钱兑换

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

经典动态规划问题:高楼扔鸡蛋(进阶)

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

贪心算法之区间调度问题

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

团灭LeetCode股票买卖问题

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

第二章、数据结构系列

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

二叉堆详解实现优先级队列

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

LRU算法详解

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

特殊数据结构:单调队列

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

队列实现栈|栈实现队列

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

第三章、算法思维系列

最后

我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习

已经将知识体系整理好(源码,笔记,PPT,学习视频)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

/img-blog.csdnimg.cn/img_convert/90e53f1b4d77e5ea7ab2d94860b092fc.png)

Github惊现标星68K的力扣算法刷题宝典,让你圆梦BAT

第三章、算法思维系列

最后

我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习

已经将知识体系整理好(源码,笔记,PPT,学习视频)

[外链图片转存中…(img-s8hdDcgn-1714551441293)]

[外链图片转存中…(img-Sy0AASRq-1714551441294)]

[外链图片转存中…(img-hpLzmVVo-1714551441294)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值