我是打算从leebook 初级算法开始刷起
数组
只出现一次的数字
知识点
异或:运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
在二进制下,0异或任何数不变,1异或任何数取反
异或其实就是找不同。利用异或的运算特性,在重复数据中去除冗余信息,实现信息增量和数据压缩。
异或运算
这个用到了异或的交换律
a ^ b ^ a = a ^ a ^ b = b
其他类似题1720. 解码异或后的数组
189. 轮转数组
动态规划
爬楼梯
直接递归的话 会超时
尾递归没看懂
f
(
n
)
f(n)
f(n) 指的是要爬到第n阶的方法数
f
(
n
)
f(n)
f(n)=
f
(
n
−
1
)
f(n-1)
f(n−1)+
f
(
n
−
2
)
f(n-2)
f(n−2)
爬到第n阶的方法数的数列也是斐波那契数列
入室抢劫
f ( n ) f(n) f(n)=max( f ( n − 1 ) f(n-1) f(n−1),arr[n]+ f ( n − 2 ) f(n-2) f(n−2) )
链表
快慢指针在单向链表和环状链表中都可以使用
这篇博客介绍了如何利用异或运算解决数组中只出现一次的数字问题,并探讨了异或的性质和交换律。同时,通过爬楼梯和入室抢劫的例子展示了动态规划在计算最优解上的应用。还提及了快慢指针在链表,特别是环状链表中的使用。

5810

被折叠的 条评论
为什么被折叠?



