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

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

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

相关推荐
一隅论数智17 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi201618 小时前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本18 小时前
离散数学第六课
学习·离散数学
AI职业加油站19 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡19 小时前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
旖旎夜光20 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊20 小时前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
Because_of_Her120 小时前
并查集-听课笔记
笔记·算法·并查集
霍霍的袁20 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio