秋招不熟悉力扣学习笔记1

总结的主要是剑指offer上对于我个人来说做过几次仍然需要思考一会才能做出来的题目。

1.重建二叉树

根据先序遍历和中序遍历重建二叉树,考察的是对二叉树的理解,二叉树先序遍历的第一个是根,在中序遍历中,左边的部分,是左子树,右边的部分是右子树。

利用递归去处理。

同样对于中序遍历和后序遍历也可以重建,思路就是最后面的后序遍历是根,然后在中序中找到根的位置,然后去重建。

先序和后序遍历不足以支撑重建二叉树。

2.旋转数组找最小值

对于一个非递增的数组,把数字循环的平移一些位置,寻找最小值,考察的是对于二分查找的理解,利用二分可以去解决,需要注意的是一种特殊情况是移动0个位置,一种特殊情况是第一个、最后一个和中间的都相等,这种情况下需要去循环遍历去寻找。

3.关于位运算,判断一个数字的二进制形式有几个1

a.使用过n&1和n>>1

在计算机中,移位运算的运算效率远远超过n/=2;不过要关注的问题是对于负数,因为移位会导致最左侧引入1,所以应该是得重点关注,可以用unsigned的来变成相同的再移位。

b.方法二是利用了一个性质即(n-1)&n相当于把n的最后一个1变成0

使用这种方式,操作几次就相当于有几个1

4.斐波那契数列的计算

斐波那契数列大概在小学就开始了解,到初中高中伴随了大多数人长大。具体的算fibi(n)是需要递归算到最后的,在这里的问题是在计算斐波那契的时候,如果直接使用递归会有很多重复的计算。

剑指offer的解决方法是不使用递归,而是反过来,从i=2,逐步计算到i=n。

其实还有另一种方法是使用一个vector,初始化都为-1,代表没计算过,然后在计算的过程中,如果不是-1,代表计算过,就直接用,否则就现算,然后填进去。

总结:今天主要是总结了二叉树的遍历特点、二分查找的使用题目、位运算的特点、在递归解决问题不方便的时候使用反过来的逐步计算过来。

其实斐波那契这个更像是动态规划。

相关推荐
M78佐菲3 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
圣保罗的大教堂3 小时前
leetcode 1406. 石子游戏 III 困难
leetcode
噜~噜~噜~3 小时前
操作系统笔记-2.3.5.1.1生产者-消费者问题
笔记·操作系统
yi.Ist4 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
骐骥17 小时前
学习:javaScriptProxy和registerJavaScriptProxy有什么区别,能注册多少个对象
学习·鸿蒙
Huathy-雨落江南,浮生若梦7 小时前
Caddy 学习笔记 - 反向代理与 IP 封禁
笔记·学习·tcp/ip
谢白羽8 小时前
SGLang的AWQ量化笔记
笔记·python·sglang
噜~噜~噜~9 小时前
操作系统笔记-2.3.5.2 读者-写者问题
笔记·操作系统
m4Rk_9 小时前
【论文阅读】Agent 记忆机制(57):MemSearch-o1——从查询词元生长证据,重组 Deep Search 记忆路径
论文阅读·人工智能·学习·开源·github
闭月之泪舞10 小时前
C++编程学习
c++·学习