自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 第45-46天学习笔记——DP真题

序列dp 路径问题 【DP】华为2023秋招-PCB印刷电路板布线(难题,好好理解) BFS + 路径DP 首先我们需要根据原矩阵,构建出每一个位置干扰值叠加的结果,得到一个新的矩阵grid_new。这里显然就是一个基于BFS计算层数的问题。 在得到新的矩阵grid_new之后,问题就转变为,对grid_new构建一条从左上到右下的路径,每次只能够向右或向下移动,路径经过的点的总和需要最小。这是一个经典的路径DP问题,和LeetCode64、最小路径和完全一致。 要特别注

2023-10-03 21:24:56 358 1

原创 第39-40天学习笔记——动态规划DP

动态规划算法的核心就是记住已经解决过的子问题的解 斐波那契数列是一个非常好的题目,既与递归有关,也与DP有关。可以从这个简单问题,思考递归与DP的内在关联。 递归往往是从后往前计算 DP往往是从前往后计算 用DP解题,一般要思考三个重要问题。 DP数组的定义是什么? 动态转移方程是什么? 如何对DP数组进行初始化? 解答了这三个问题,代码基本上呼之欲出。千万不要拘泥于复杂的定义,要重理解而轻概念。 动态规划(序列DP) 入门问题(理解DP基础概念) LeetCode 509、

2023-09-24 22:23:52 85 1

原创 第37-38天学习笔记——位运算

位运算 异或运算:^ 相同为0,不同为1 几种常用运算符 不需要额外空间的方法,就往位运算上想 假设 a = 1, b = 0 1、 1 ⊕ 0 = 1, 0 ⊕ 0 = 0 => a ⊕ 0 = 1, b ⊕ 0 = 0 ==> 任何数与0做异或运算结果均为其本身 2、 1 ⊕ 1 = 0, 0 ⊕ 0 = 0 => a ⊕ a = 0, b ⊕ b = 0 ==> 任何数与其本身做异或运算结果均为0 3、 1 ⊕ 0 ⊕ 1 = 0 => 1 ⊕

2023-09-22 11:57:05 78 1

原创 第31-32天学习笔记——DFS/BFS

DFS / BFS 深度优先搜索DFS “ DFS以LeetCode、695岛屿题为模板进行解决 ” LeetCode 200、岛屿数量 最好按照695题的模板来写,统一成一个模板 先初始化一个二维数组(初始化为0,代表当前网格没有被访问,1代表当前网格被访问过),循环遍历当前位置的上、下、左、右四个方向访问网格中的元素,如果发现新位置是陆地,并且没有被标记过,递归搜索新的位置(绿色的位置周边都已经被搜索过了,所以来到上面的1的位置,上面的1的位置周边也已经搜索过了,就来到上面的1的右

2023-09-17 22:10:53 67 1

原创 第29-30天学习笔记——回溯真题

回溯真题 这几道真题可以作为笔试真题模板进行参考 感觉和LeetCode200、岛屿题是类似的模板 【回溯】2023B-找到它 注意,本题和LeetCode79. 单词搜索几乎完全一致,唯一的区别在于前者只要求判断是否能够找到该单词,本题还需要输出起始位置。 注意回溯的选择条件 (nx,ny)必须满足以下三个条件,才可以继续进行回溯函数的递归调用 1. 不越界;2. 尚未检查过;3.在grid中的值grid[nx][ny]为word的下一个字符word[word_idx+1]

2023-09-15 17:14:43 43

原创 第27-28天学习笔记——二叉树经典题、回溯算法

二叉树经典题 80% 二叉树的算法题基本上就是用递归 LeetCode 105、从前序与中序遍历序列构造二叉树(重要,掌握) 题目解读 前序、中序 在前序中找到根节点3,再在中序里找到左孩子节点9 再举一个字母的例子,以中序为对应索引,然后遍历前序,找根节点和左右孩子节点 代码编写思路 通过哈希表把中序遍历序列中的值和顺序建立映射关系,通过 f

2023-09-13 18:58:51 76 2

原创 第25-26天学习笔记——递归、二叉树DFS、BFS

递归 递归代码的组成部分: 递归终止条件 递归代码 递归后的代码 返回的结果 递归的本质和基本实现方式 1、函数通过自身调用自身 2、通过函数体来进行的循环,递归通常不在意具体操作,只关心初始条件和上下层的变化关系。 3、递归函数需要有临界停止点,即递归不能无限制的执行下去。通常这个点为必须经过的一个数。 有点像栈,先处理倒数第一个函数,再把倒数第一个的输出放到倒数第二个函数里,继续处理 递归思想 递归

2023-09-10 18:46:34 46 1

原创 第20-22天学习笔记——贪心算法&二分查找

第二十天——贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 LeetCode 455、分发饼干 将孩子们的胃口值和饼干的尺寸先都按照从小到大进行排列,然后设置两个指针,如果饼干满足了孩子,孩子+=1,不管满不满足,饼干都要+=1 时间复杂度:O(mlogm+nlogn),其中 m 和 n 分别是数组 g 和 s 的长度。对两个数组排序的时间复杂度是 O(mlogm+nlogn),遍历

2023-09-06 13:52:59 102 1

原创 第18-19天学习笔记——前缀和

第18天直播 前缀和 涉及到前几个元素的和的问题 「前缀和」数组的思路是:将原始数组进行预处理,将来需要查询数据的时候,只需要查询预处理数组的某些值即可。 前缀和是非常能体现利用空间换时间的算法思想,实现了快速计算区间和的作用。 第一种定义: 0、nums 数组长度为 N , preSum 数组长度也为 N 1、当 i >= 1 ,preSum[i] 表示从 nums[0] 到 nums[i] 所有元素的和 2、当 i = 0 ,preSum[0] = 0 递推公式:

2023-09-02 20:23:50 53

原创 第16-17天学习笔记——链表&双指针

链表 1、天然的具备递归性 2、设置虚拟头结点,可以起到非常好的效果:添加虚拟头节点之后,原链表的每个节点的地位都是一样的,即怕删除的时候把原链表的头给删了就无法访问链表了 [链表Linked List]是一种线性数据结构,其中每个元素都是单独的对象,各个元素(一般称为节点)之间通过指针连接。如果是单向链表,最后一个节点的下一个是null(None) 和数组进行对比,链表中的节点中记录了连接关系,因此链表的存储方式相比于数组更加灵活,系统不必保证内存地址的连续性。 链表的[节点Node]包含两项数

2023-09-01 12:15:58 36 1

原创 哈希表学习笔记——第13-15天内容

周一直播 哈希表 定义:哈希表通过建立「键key」和「值value」之间的映射,实现高效的元素查找。python对应是dict() 注意:哈希表dict()是一个字典,键必须是唯一的,但值则不必。用来存放数组的元素值以及索引值d = {key1 : value1, key2 : value2, key3 : value3 } 注意:哈希表的value不一定是一个值,可能是一个数组,包含很多部分... 访问哈希表(字典)中的key/value,d.keys () / d.values()

2023-08-30 19:25:02 68

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除