秋招不熟悉力扣学习笔记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,代表计算过,就直接用,否则就现算,然后填进去。

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

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

相关推荐
良木林2 小时前
子串 - LeetCode hot 100
算法·leetcode·职场和发展
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 2 章 IOC 思想与实现 阅读笔记 1
spring boot·笔记·后端
LuminousCPP4 小时前
数据结构-双向循环链表
c语言·数据结构·笔记·链表
小弥儿4 小时前
GitHub今日热榜 | 2026-08-11:图原生基础设施首日登顶
学习·开源·github
302wanger5 小时前
【阅读笔记】当AI拿走一切之后
笔记
疯狂打码的少年7 小时前
【数据结构】串(字符串):基本概念与存储
数据结构·笔记
for_ever_love__7 小时前
python基础语法学习: 数据容器
windows·python·学习
云空8 小时前
《电子专业完整学习路线图(分两套:本科四年版 / 零基础自学速成版)》
科技·学习·学习方法·高考
min(a,b)8 小时前
学习第16天:LangGraph 与 Agent 工作流编排
学习