- 博客(39)
- 收藏
- 关注
原创 代码随想录day36dp4
题目链接文章讲解public:// 1. 确定 DP 数组及下标的含义:// dp[i][j] 表示考虑前 i 块石头,是否能够通过选择一部分石头,凑出总和为 j。// 具体地,dp[i][j] 表示使用前 i 块石头,是否可以组合出和为 j 的子集。// 我们的目标是计算 dp 数组,并在最后返回最后两块石头的差值。// 2. 计算所有元素的总和:// sum 是数组 stones 所有元素的和。我们需要判断是否可以将数组分成两个子集,// 每个子集的和应该是 sum / 2。
2025-07-16 14:21:24
181
原创 代码随想录day17二叉树5
错误思路:刚开始想用前序遍历递归 发现只能过一部分案例 因为它只判断了与目前结点的比较 但是没有满足节点的右子树只包含 大于 当前节点的数。例如root =[5,4,6,null,null,3,7]正确思路:中序遍历下,输出的。
2025-06-27 12:00:40
297
原创 代码随想录day16二叉树4
第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)第二步:如果不为空,那么取后序数组最后一个元素作为节点元素。第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点。第五步:切割后序数组,切成后序左数组和后序右数组。第一步:如果数组大小为零的话,说明是空节点了。第六步:递归处理左区间和右区间。参照昨天的二叉树的所有路径。
2025-06-26 22:36:04
165
原创 代码随想录day13二叉树1
确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。将结果reverse一下即可。
2025-06-23 16:45:27
394
原创 代码随想录day11栈和队列2
对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。当数据类型并不是基本数据类型,而是自定义的数据类型时,就不能用greater或less的比较方式了,而是需要自定义比较方式。这会报错,因为 atoi() 需要 const char* 参数,但 tokens[i] 是 std::string。此时默认的容器是vector,默认的比较方式是大顶堆less。
2025-06-22 02:02:35
411
原创 代码随想录day10栈和队列1
deque是一个双向开口的连续线性空间,可以在两端进行高效的插入和删除操作。双向开口:deque可以在两端进行高效的插入和删除操作,即在队首和队尾都可以进行操作。动态扩展:deque的内部实现使用了分段连续线性空间,可以动态扩展以适应元素的增加。// 访问下标为2的元素。// 在队头插入元素。// 在队尾插入元素。
2025-06-20 18:30:48
965
原创 代码随想录day9字符串2
KMP算法(Knuth-Morris-Pratt算法)是一种高效的字符串匹配算法,用于在主串中查找模式串出现的位置。其核心思想是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数。
2025-06-19 12:21:03
890
原创 代码随想录day7哈希表2
模拟散列表(1)哈希表的作用哈希表就是在关键字和存储位置之间建立对应关系,使得元素的查找可以以O(1)的效率进行, 其中关键字和存储位置之间是通过散列函数建立关系,记为:(2) 常见的散列函数1)线性定址法:直接取关键字的某个线性函数作为存储地址,散列函数为:2)除留余数法:将关键字对某一小于散列表长度的数p取余的结果作为存储地址,散列函数为:3)平方取中法:对关键字取平方,然后将得到结果的中间几位作为存储地址;4)折叠法:将关键字分割为几部分,然后将这几部分的叠加和作为存储地址。
2025-06-18 12:22:56
916
原创 代码随想录day6哈希表1
memset 函数是一个C标准库中的函数,用于将一块内存区域的每个字节设置为指定的值。函数的参数包括 ptr,表示要设置的内存区域的起始地址;value,表示要设置的值,通常以整数表示,但在传给 memset 时会自动转换为 unsigned char 类型;num,表示要设置的字节数。memset 函数的工作原理是将指定值 value 拷贝到指定内存区域 ptr 所指向的每个字节中,重复拷贝 num 次。上述代码将数组 arr 的所有元素设置为零。
2025-06-16 22:40:01
275
原创 代码随想录day4链表2
双指针做法:双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。所以我们只要找到 第一个 A == B 的地方,即它们指向同一个内存地址(不是值相等,而是节点地址相等)。链表相交的意思是:从某个节点开始,两条链表共享后续所有节点(即它们的 next 指针完全一致)。所以 A == B 判断的就是这个内存地址相等,而不是。
2025-06-16 16:32:36
168
原创 代码随想录day3链表1
1.new是一个关键字,用于开辟空间,开辟的空间在堆上,而一般声明的变量存放在栈上;2.new得到的是一段空间的首地址。所以一般需要用指针来存放这段地址3.开辟的内存空间需要记得delete掉,否则会造成内存泄漏!delete p的时候:首先调用这个对象的析构函数,然后释放这个对象的空间。
2025-06-13 21:42:05
239
原创 代码随想录day2数组2
滑动窗口可以理解为左右指针中间窗口的sum为两指针的“共同财产”,就是右指针一直在努力工作挣钱,好不容易共同财产大过target,记录一下两指针之间的距离,结果左指针就开始得瑟挥霍,不停花钱(往右移动),结果花钱一直花到sum又小过target,此时右指针不得不再次出来工作,不停向右移动,周而复始,最后取左右指针离得最近的时候。二维前缀和: s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];(2)下面定义的是行为r,列为c的二维数组,初始值为0。
2025-06-12 15:26:17
669
原创 代码随想录算法day1数组1
题目链接:704.二分查找文章讲解:视频讲解:左闭右闭左闭右开关于二分mid溢出问题解答:mid = (l + r) / 2时,如果l + r 大于 INT_MAX(C++内,就是int整型的上限),那么就会产生溢出问题(int类型无法表示该数)所以写成 mid = l + (r - l) / 2或者 mid = l + ((r - l) >> 1) 可以避免溢出问题对于二进制的正数来说,右移x位相当于除以2的x几次方,所以右移一位等于➗2,用位运算的好处是比直接相除的操作快严格的来说,双指针
2025-06-11 15:29:29
278
原创 李沐动手深度学习学习周报5
这个星期俩门考试主要在准备考试,深度学习学了门控循环单元GRU、长短期记忆网络LSTM、深层循环神经网络、双向循环神经网络。
2024-11-30 14:03:01
385
原创 李沐动手深度学习学习周报4
这个星期主要学习了现代卷积神经网络和循环神经网络,下星期考试较多,主要准备期末考试。① 在全局平均池化层(GAP)被提出之前,常用的方式是将feature map直接拉平成一维向量,但是GAP不同,是将每个通道的二维图像做平均,最后也就是每个通道对应一个均值。② 假设卷积层的最后输出是h × w × d 的三维特征图,具体大小为6 × 6 × 3,经过GAP转换后,变成了大小为 1 × 1 × 3 的输出值,也就是每一层 h × w 会被平均化成一个值,如下图所示。③ GPA优势:抑制过拟合。
2024-11-21 21:18:02
1963
原创 李沐动手深度学习学习周报3
本周主要学习了PyTorch神经网络基础,卷积层,深度卷积神经网络(AlexNet)。临近期末周,最近在准备考试。super().__init__() # 调用父类的__init__函数# 实例化多层感知机的层,然后在每次调用正向传播函数调用这些层net(X)# 构造一个没有任何参数的自定义层# 将层作为组件合并到构建更复杂的模型中# 带参数的图层。
2024-11-14 22:59:45
677
原创 linux配置pytorch\tensorflow操作手册
进入pytorch官网 https://pytorch.org/先启动 conda activate pytorch。这俩环境都已经安装成功在虚拟环境pytorch下面。然后conda list 就可以看见。conda list 看见已经安装。选择版本后在终端运行即可安装完成。查看有多少个虚拟环境。
2024-11-08 11:11:45
353
1
原创 小土堆深度学习入门学习周报1
文章目录摘要Python两大法宝Pytorch加载数据常用数据集两种形式路径直接加载数据Dataset加载数据TensorboardTensorboard 读图片TransformsTransforms用途transforms.Totensor使用需要Tensor数据类型原因常见的Transforms工具Normanize归一化Resize裁剪torchvisiontorchvision数据集介绍torchvision数据集下载查看CIFAR10数据集内容Tensorboard查看内容DataloaderT
2024-11-07 20:39:08
820
原创 李沐动手深度学习学习周报2
本周主要学习了深度学习的Softmax回归问题、图像分类数据集的代码实现、多层感知机、卷积层学了一部分,统计学习的三要素模型、策略、算法,模型的评估和选择、过拟合、感知机。return softmax(torch.matmul(X.reshape((-1,w.shape[0])),w)+b) # -1为默认的批量大小,表示有多少个图片,每个图片用一维的784列个元素表示。
2024-11-01 15:58:17
757
原创 李航统计学习学习周报1
感知机是二类分类的线性模型,属于判别模型.感知机学习旨在求出将训练数据进行线性划分的分离超平面.是神经网络和支持向量机的基础.模型:,w叫作权值向量,b叫做偏置,sign是符号函数.感知机的几何解释:wx+b对应于特征空间中的一个分离超平面S,其中w是S的法向量,b是S的截距.S将特征空间划分为两个部分,位于两个部分的点分别被分为正负两类.
2024-11-01 00:25:46
1452
原创 李沐动手学习深度学习学习周报1
本周是学习李沐动手学习深度学习的第一周,主要学习了深度学习基础知识(数据操作、数据预处理、线性代数、矩阵计算、自动求导、线性回归、优化算法)。① 如下图所示,X轴是不同的模式,最早的是符号学,然后概率模型、机器学习。Y轴是我们想做什么东西,感知是我了解这是什么东西,推理形成自己的知识,然后做规划。② 感知类似我能看到前面有个屏幕,推理是基于我看到的东西想象未来会发生什么事,根据看到的现象、数据,形成自己的知识,知道所有知识后能进行长远的规划,未来怎么做。
2024-10-25 11:50:59
2132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人