- 博客(22)
- 收藏
- 关注
原创 代码随想录1016-Day18
二叉树解题的思维模式分两类:1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。无论使用哪种思维模式,你都需要思考:如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。
2024-11-21 18:40:34
703
1
原创 代码随想录1016-Day17
二叉树解题的思维模式分两类:1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。无论使用哪种思维模式,你都需要思考:如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。
2024-11-21 17:27:23
400
原创 代码随想录1016-Day16
二叉树解题的思维模式分两类:1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。无论使用哪种思维模式,你都需要思考:如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。
2024-11-20 17:17:14
418
原创 代码随想录1016-Day15
二叉树解题的思维模式分两类:1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。无论使用哪种思维模式,你都需要思考:如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。
2024-11-20 16:12:26
926
原创 代码随想录1016-Day14
二叉树解题的思维模式分两类:1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。无论使用哪种思维模式,你都需要思考:如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。
2024-11-08 05:22:38
323
原创 代码随想录1016-Day13
确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。
2024-11-08 04:46:20
365
原创 代码随想录1016-Day11
通过文档 深入理解了滑动窗口的相关算法,即单调队列的大致思路,也了解了优先队列的知识点。通过优先队列的自定义比较函数,可以构建出一个小顶堆,维护的堆顶正好是频率最低的元素。即用小顶堆,因为要统计最大前k个元素,只有小顶堆每次将最小的元素弹出,最后小顶堆里积累的才是前k个最大元素。push 方法依然在队尾添加元素,但是要把前面比自己小的元素都删掉,直到遇到更大的元素才停止删除。pop 方法也是操作队头,如果队头元素是待删除元素 n,那么就删除它。思路:用一个 哈希表把每个元素出现的频率计算出来。
2024-11-04 02:05:24
310
原创 代码随想录1016-Day10
push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从输出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。我们在删除相邻重复项的时候,其实就是要知道当前遍历的这个元素,我们在前一位是不是遍历过一样数值的元素,那么如何记录前面遍历过的元素呢?所以就是用栈来存放,那么栈的目的,就是存放遍历过的元素,当遍历当前的这个元素的时候,去栈里看一下我们是不是遍历过相同数值的相邻元素。假设输入栈为 1 2 3 栈顶为 3。
2024-11-04 01:18:58
367
原创 代码随想录1016-Day8
思路:双指针,定义旧指针和新指针,旧指针指向原来的数组最后一个位置,新指针指向新开辟的数组最后一个位置,具体讲解看文章。理解双指针在字符串的应用方式,并学习数组填充类的问题需要从后往前进行操作,并使用resize()函数进行重新开辟。与1的异或:a ^ 1 会翻转 a 的位(即如果 a 是0,结果是1;其实很多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。结合律:(a ^ b) ^ c = a ^ (b ^ c)与0的异或:a ^ 0 = a。
2024-10-26 15:45:44
265
原创 代码随想录1016-Day7
实际上就是把之前的题目解法合并起来了,n == 2 时是 twoSum 的双指针解法,n > 2 时就是穷举第一个数字,然后递归调用计算 (n-1)Sum,组装答案。需要注意的是,3Sum 的结果也可能重复,比如输入是 nums = [1,1,1,2,3], target = 6,结果就会重复,可能选出多个 [1,2,3]。1.首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。2.遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
2024-10-26 06:06:40
683
原创 代码随想录1016-Day6
之前有做过,感觉这几道题用哈希表来做还是比较简单的,关键就是理解为什么要使用哈希表:即当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(也就是相加等于target)本题,需要一个集合来存放我们遍历过的元素,然后在遍历数组的时候去询问这个集合,某元素是否遍历过,也就是 是否出现在这个集合。
2024-10-26 03:31:30
320
原创 代码随想录1016-Day4
难,想了好久,后面几道题一点思路没有,看文章才能看懂一些,尤其是环形的思路和24题的递归写法,也是看文章学到的。19和链表相交的双指针思路也是精髓,之前没写过真的一点思路没有,任重道远啊。那么如果相交,两个节点走到相交节点的时候,经过的路程一定相等 也就是相交一定相等。既走了的相交前、后的节点,又走了的相交前节点,既走了的相交前、后的节点,又走了的相交前节点。需要注意将递归分解成子问题 从后往前推。思路:文章里讲的挺详细的 看文章。
2024-10-25 01:26:27
821
原创 代码随想录1016-Day2
还是经典的第一眼有思路但是做到一半不会做了 看题解后才知道代码该怎么写,但是在看题解和文章后还是记住了一些思路和解法,尤其是一些边界问题,希望继续进步。前缀和的思想是重复利用计算过的子数组之和,从而降低区间查询需要累加计算的次数。p[5] - p[1] 就是 红色部分的区间和。前缀和 在涉及计算区间和的问题时非常有用!右下左上 注意边界和避免填充的问题。
2024-10-20 02:29:33
358
原创 代码随想录1016-Day1
有序+查找 联想到二分,首先自己实现了一遍,之前由于背过模板,但是对于里面的细节不太了解,之后看完文章后又实现了一遍,有了更深的理解。好久没做算法题了 找到工作后就懈怠了一直没刷,今天刷题的时候发现有大致思路也无从下笔,万事开头难,希望刷题能坚持下去。主要思路在于平方后 最大值的位置要么在最左边要么在最右边衍生的前后指针。看完文章后发现自己关于快慢指针理解不够深刻。知道是双指针操作,但是还是没什么思路。需要知道为什么叫做快指针和慢指针。没想到是前后指针的方式 跪了。
2024-10-16 21:58:59
501
2
原创 Unity3D对于光照渲染的个人简单理解(一)
首先理解一下直接光照和间接光照的定义在Unity中 光照效果主要由两个地方进行控制1.灯光参数面板(即Light组件) 主要控制的是直接光照2.全局的Lighting界面来进行控制 主要控制的是间接光照这两个面板之间是如何联系起来的通过灯光的模式Realtime:实时光模式如果勾选实时光realtime 再勾选 全局照明(本质上是间接照明 因为全局 = 直接+间接Mixed:混合光模式 对应的是烘焙全局光照三种模式的区别Realtime: Unity计算并更新实时灯光在运行
2021-05-31 18:04:39
1044
8
原创 Unity实现2D的抛物线轨迹预测效果
首先来看实现效果:做的时候距离现在有好几个月了 大部分步骤也很难记住 工程上传到了github 码友们可以去看一看
2021-05-22 20:57:02
3339
16
原创 Unity3D鼠标拖拽实现相机移动
实现拖拽的方法:通过创建一个X-Z平面 得到从屏幕发出的射线到当前X-Z平面的碰撞点 得到的位置作为起始位置和结束位置当鼠标按下的时候 得到的是初始位置 当鼠标松开的时候 得到的是结束位置得到两个位置的距离再通过Vector.Lerp()函数和Update()函数来平衡每一帧的差异 进而实现滑动的效果。代码示例:直接挂在Camera上即可 private Vector3 dragStartPos, dragCurrentPos; private Vector3 newPos;
2021-05-19 19:12:31
3841
5
原创 Unity3D关于InputSystem的简单使用(二)
Unity3D关于InputSystem的简单使用(一)前面提到了关于InputSystem的简单配置 接下来用C#代码的形式用到下面这个接口public interface IGamePlayActions{ void OnMove(InputAction.CallbackContext context);//这里的方法是你添加的具体的Input Action}创建Input脚本 并做成ScriptableObject(加不加都行) 并继承接口public class Input :
2021-05-16 21:33:41
5841
3
原创 Unity3D关于InputSystem的简单使用(一)
看了看Unity的官方文档 简单学习下InputSystem怎么使用目录什么是InputSystem安装InputSystemInputSystem的配置直接从输入设备获取输入通过输入操作间接获取输入什么是输入动作(InputAction)什么是动作表(Action Map)如何配置Input Action Asset1.添加Action Map2.配置Actions对Input Action进行输入信号的绑定通过C#的形式对InputSystem简单进行操作什么是InputSystem新输入系统In
2021-05-16 20:02:08
12862
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅