手撕红黑树、KMP…全程Hard题,2021算法面试难度逆天!

纵观国内头部大厂的算法面试情况,可以说是诸神内卷,全员团灭。

v2-dc94a01eb4b03c3d7b271af1690829d4_b.jpg

而2021年的趋势是DP、KMP等都是信手拈来,个别公司还要求你手写实现,LC刷题数至少得达到300+,而且必须对题目有深刻的理解,能很好地应对难题、变形题和扩展题。


为此,九章也搜集了LC上的部分难题,各位不妨来试试自己能不能秒杀市面上的难题(文末有福利):


1772·子集数量

难度:☆☆☆☆

对于一个集合中的每个元素x,2x和3x均不在这个集合中。则称这个集合为好集合。

给定一个整数n。好集合中的元素大小在[1,n]中间。请你求出满足条件的好集合的个数。答案对1000000007取模。

n<=100000

输入:n=4
输出:ans=8

【样例解释】
有8 个集合满足要求,分别是空集,{1},{1,4},{2},{2,3},{3},{3,4},{4}。

免费做题链接LintCode 领扣


1516·异或和

难度:☆☆☆☆

给定一个n×m矩阵arr,矩阵中的路径定义为从(0, 0) 走到 (n-1, m-1) 且只能往下和往右走。对于每一条路径都有一个goalgoal等于这条路径上经过的所有数的异或。 现在你需要找到有多少条路径上的goal等于target,返回这个数目。

  • xor操作是按位异或,在Java或C ++或python中表示为“ ^”
  • 对xor有疑问可查询xor
  • 1<=n,m<=20

样例1

输入:arr=[[2,1,5],[7,10,0],[12,6,4]],target=11
输出:3
解释:
2 1 5
7 10 0
12 6 4 
(0,0)→(1,0)→(2,0)→(2,1)→(2,2).   2^7^12^6^4=11
(0,0)→(1,0)→(1,1)→(1,2)→(2,2).   2^7^10^0^4=11
(0,0)→(0,1)→(1,1)→(2,1)→(2,2).   2^1^10^6^4=11

样例2

输入:arr=[[1,3,3,3],[0,3,3,2],[3,0,1,1]],target=2
输出:5

免费做题链接LintCode 领扣

1384·段式石子归并

有一个石子归并的游戏。最开始的时候,有n堆石子排成一列,目标是要将所有的石子合并成一堆。合并规则如下:

  1. 每一次可以合并连续x堆石子,left <= x <= right
  2. 每次合并的代价为所合并的x堆石子的重量之和

求出最小的合并代价,如果无法完成合并返回0

  • 1 <= n <= 1002 <= left <= right <= n
  • 1 <= weight[i] <= 1000


1769·方格取数

难度:☆☆☆☆☆

在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。对于给定的方格棋盘,按照取数要求编程找出总和最大的数。

n, m \leq 100n,m≤100

样例1

输入: mp=[[1,2,3],[3,2,3],[2,3,1]]
输出: 11
解释:
2+3+3+3=11

样例2

输入: mp=[[1,3],[4,5]]
输出:7
解释:
3+4=7

免费做题链接LintCode 领扣

1758·矩形覆盖面积

难度:☆☆☆☆

给定n个矩形的左下角和右上角的坐标,求所有矩形最后的覆盖的总面积。

  • n不超过100
  • 坐标的值都大于0且小于100000

样例1

输入: a=[[10,10,20,20],[15,15,25,25.5]]`
输出: 180
解释:
坐标分别为(10,10),(20,20) 和(15,15),(25,25.5)的两个矩形的面积是180。

样例2

输入: a=[[10,10,20,20]]`
输出: 100
解释:
坐标分别为 (10,10),(20,20) 的面积是100。

免费做题链接LintCode 领扣

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值