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

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

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

相关推荐
Nil2084 分钟前
leetcode 198打家劫舍
算法·leetcode·职场和发展
mmmmath_329 分钟前
LeetCode.429.N叉树的层序遍历
数据结构·leetcode
li星野1 小时前
5 TYPES OF ADVERBS — One-Page Notes
学习
星恒随风1 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
罗西的思考1 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (7)— 混合机制
笔记·学习
starsky762382 小时前
Agent学习——上下文工程(三)
学习
ClinicTech2 小时前
婴儿培养箱技术笔记:温控、报警与数据记录的三层架构
笔记
xiaominngtongxue2 小时前
从一次接触网实训课看中职实训教学的组织逻辑
笔记
xier_ran3 小时前
【infra之路】AI 编译器学习笔记(四):PatternRewriter 与贪心 driver
人工智能·笔记·学习
小弥儿4 小时前
GitHub今日热榜 | 2026-10-12:pytorch 上升四位
人工智能·pytorch·学习·开源·github