自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 将GitHub远程仓库修改为ssh

本文介绍了如何将GitHub远程仓库从HTTP协议修改为SSH协议。首先在本地生成SSH密钥对,然后登录GitHub账户,在设置中添加公钥。最后通过git命令修改本地仓库的远程链接地址,完成协议切换。SSH方式相比HTTP更安全便捷,尤其适合频繁的代码上传操作。整个过程包括密钥生成、GitHub配置和本地仓库设置三个主要步骤。

2025-09-10 13:35:21 389

原创 安全微伴作业使用方法

本文介绍了安全微伴作业的使用方法:首先从GitHub下载项目文件,可以选择克隆或直接下载zip;然后配置Python环境,提供虚拟环境和非虚拟环境两种安装方式;最后通过开发者工具获取用户ID和token信息,修改配置文件即可运行。

2025-09-04 10:25:32 1117

原创 4 用pytorch实现线性回归

本文介绍了使用PyTorch实现线性回归的完整流程。首先导入必要的库,准备训练数据x_data和y_data作为张量矩阵。然后设计LinearModel类继承nn.Module,包含初始化函数__init__()和前向传播函数forward(),使用nn.Linear定义线性层。接着构建MSE损失函数和SGD优化器。在训练循环中依次执行前向传播、计算损失、梯度清零、反向传播和参数更新。最后输出训练日志,展示epoch和loss的变化情况。整个过程涵盖了PyTorch实现线性回归的关键步骤:模型定义、损失函数

2025-09-01 11:01:21 805

原创 3 反向传播

摘要:反向传播原理与实现 本文介绍了反向传播算法的基本原理及其在深度学习中的应用。首先回顾了单层线性模型的梯度下降求解过程,指出多层线性模型会退化为单层形式,强调引入非线性层的重要性。文中详细讲解了链式求导法则在反向传播中的应用,通过计算图说明前向传播和反向传播的流程。最后展示了如何使用PyTorch实现反向传播,包括初始化权重、开启梯度计算及构建计算图。反向传播算法通过高效计算梯度,解决了深层神经网络中参数更新的难题。

2025-08-29 23:21:20 900

原创 34 在排序数组中查找元素的第一个和最后一个位置

摘要: 题目要求在非递减排序数组中找到目标值的起始和结束位置,若不存在则返回[-1,-1]。通过两次二分查找实现:第一次查找左边界(第一个≥target的位置),第二次查找右边界(最后一个≤target的位置)。若左边界无效或对应值不匹配,直接返回[-1,-1]。时间复杂度为O(log n),满足题目要求。代码示例展示了闭区间二分查找的实现过程。

2025-08-28 11:47:40 189

原创 1658 将x减到0的最小操作数

题目要求通过移除数组首尾元素使x减到0的最少操作数。解法采用了逆向思维,将问题转化为求数组中等于sum(nums)-x的最长子数组长度。通过滑动窗口算法,遍历数组寻找满足条件的子数组,最终返回数组总长减去该子数组长度即为最少操作数。若不存在满足条件的子数组则返回-1。该方法时间复杂度为O(n),适用于大规模数据。

2025-08-28 11:47:10 233

原创 2730 找到最长的半重复字符串

题目要求找出字符串中最长的半重复子字符串长度,其中半重复字符串定义为至多有一对相邻相同字符。使用滑动窗口方法,维护左右指针和相同字符对数统计。当相同对数超过1时,移动左指针直到对数减至1。最终返回窗口的最大长度。时间复杂度为O(n),空间复杂度为O(1)。

2025-08-28 11:46:39 315

原创 2958 最多k个重复元素的最长子数组

本文探讨了如何找到数组中满足元素出现频率不超过k的最长子数组。使用滑动窗口和哈希表技术,当窗口内元素频率超过k时,移动左边界缩小窗口。时间复杂度为O(n),空间复杂度为O(n)。示例显示,该方法能正确识别最长子数组,如当k=2时,数组[1,2,3,1,2,3,1,2]的最长好子数组长度为6。该算法高效解决了问题,适用于大规模数据。

2025-08-28 11:46:08 257

原创 76 最小覆盖子串

题目要求在字符串 s 中找到包含字符串 t 所有字符的最小子串。若不存在则返回空字符串。解题思路通常采用滑动窗口法,通过维护左右指针动态调整窗口大小,确保窗口内包含 t 的所有字符。具体步骤包括:初始化哈希表统计 t 的字符频率,移动右指针扩展窗口直至满足条件,再移动左指针收缩窗口以寻找最小子串。时间复杂度为 O(m+n),空间复杂度为 O(n)。示例如 s="ADOBECODEBANC",t="ABC" 时,最小覆盖子串为 "BANC"。

2025-08-27 21:34:41 170

原创 1628 将x减到0的最小操作数

该题目要求通过移除数组左右两端的元素来将x恰好减到0的最小操作次数。解题思路是反向思考,转化为寻找数组中sum(nums)-x的最长子数组问题。通过滑动窗口算法,在O(n)时间复杂度内找到满足条件的子数组,最终答案为数组长度减去子数组长度。若不存在这样的子数组则返回-1。示例中给出了不同情况下的解法,如对于nums=[1,1,4,2,3],x=5,最优解是移除后两个元素,操作次数为2。

2025-08-27 21:16:31 317

原创 2302 统计得分小于k的子数组数目

文章摘要 题目要求统计数组中所有分数严格小于k的非空连续子数组数量。分数的定义为子数组元素和乘以子数组长度。解法采用滑动窗口技术,维护窗口[left, right]的分数,当分数超过k时移动左指针缩小窗口。对于每个有效的窗口,以right结尾且满足条件的子数组数量为right-left+1。时间复杂度为O(n),适用于大规模数据。示例1中nums=[2,1,4,3,5],k=10时输出6,示例2中nums=[1,1,1],k=5时输出5。

2025-08-27 21:15:47 235

原创 1004 最大连续1的个数三

摘要: 题目要求在二进制数组 nums 中,最多翻转 k 个 0 为 1,求翻转后连续 1 的最大长度。使用滑动窗口算法,维护一个窗口内 0 的数量不超过 k,通过移动左右指针更新最大窗口长度。例如,nums = [1,1,1,0,0,0,1,1,1,1,0] 且 k=2 时,最大长度为 6。时间复杂度为 O(n),空间复杂度 O(1)。

2025-08-27 21:15:17 231

原创 2962 统计最大元素出现至少k次的子数组

本文解决统计数组中包含最大元素至少出现k次的子数组数量问题。采用滑动窗口方法,先找到数组最大值,然后遍历数组维护窗口中最大值的出现次数。当次数达到k次时,移动左指针并累加满足条件的子数组数目。算法时间复杂度为O(n),空间复杂度O(1),适用于大规模数据。示例演示了如何计算满足条件的子数组数目。

2025-08-27 21:14:39 124

原创 3 无重复字符的最长子串

请你返回子数组内所有元素的乘积严格小于。的连续子数组的数目。

2025-08-27 21:14:08 179

原创 713 乘积小于k的子数组

这道题目要求计算数组中所有连续子数组乘积小于k的数目。采用滑动窗口算法,通过维护一个乘积小于k的窗口来高效统计符合条件的子数组个数。当窗口乘积超过k时,移动左边界缩小窗口。时间复杂度为O(n),空间复杂度为O(1)。具体实现时需要注意当k<=1时直接返回0,因为所有正整数乘积都至少为1。算法核心在于每次右边界扩展时,计算以右边界结尾的所有合法子数组数目(right-left+1)。

2025-08-27 21:13:32 186

原创 209 长度最小的子数组

这篇文章介绍了两种滑动窗口算法,用于解决"长度最小的子数组"问题。两种方法都通过维护窗口和来寻找满足条件(和≥target)的最短子数组。第一种方法在满足条件时收缩窗口左边界,第二种方法则直接以条件为循环条件。两种方法的时间复杂度均为O(n),空间复杂度为O(1)。文章包含示例说明和Python实现代码,并附有算法性能分析图。

2025-08-27 09:18:52 170

原创 2 梯度下降算法

本文介绍了梯度下降算法的原理与实现。首先回顾了线性模型和暴力枚举法的局限性,随后提出分治思路的不足,进而引入梯度下降算法。该算法通过求导找到函数下降方向,利用更新公式调整权重(w = w - α∂cost/∂w),但可能陷入局部最优或鞍点。文章详细推导了损失函数MSE的梯度公式,并给出Python实现代码,包括前向传播、损失计算和梯度更新步骤。最后对比了梯度下降(GD)与随机梯度下降(SGD)的区别,指出SGD通过随机选择样本能有效避免鞍点问题。代码展示了训练过程收敛到w=2的结果,并讨论了学习率对训练效果

2025-08-26 22:06:19 688

原创 1 线性模型

本文介绍了线性模型的基本原理与实现方法。主要内容包括:1) 数据集的预处理,将数据分为训练集、测试集和开发集;2) 线性模型y=wx+b的引入,通过最小化平均平方误差(MSE)来求解参数w和b;3) 使用穷举法实现的代码示例,包括一元线性回归y=wx和二元线性回归y=wx+b的Python实现,并展示了3D可视化损失函数曲面的方法。文章还强调了模型训练中过拟合问题和可视化分析的重要性。

2025-08-26 14:47:26 589

原创 3000 对角线最长的矩形的面积

题目要求找出二维数组中对角线最长的矩形面积,若对角线相同则取面积最大的矩形。解法是遍历数组,计算每个矩形的对角线平方(避免开方运算),比较并更新最长对角线及其对应面积。当对角线相同时,比较并更新最大面积。最终返回满足条件的矩形面积。

2025-08-26 11:07:58 387

原创 2824 统计和小于目标的下标对数目

文章摘要: 题目要求统计数组中满足nums[i]+nums[j]<target且i<j的下标对数量。通过先排序数组,再使用双指针法优化求解:左指针i从0开始,右指针j从末尾开始,若当前和小于目标值,则i到j-1的所有组合均满足条件,累加后右移i;否则左移j。该方法时间复杂度为O(nlogn),适用于数组长度较小的情况(如n≤50)。示例显示算法正确性,如输入[-1,1,2,3,1]和target=2时输出3组有效下标对。

2025-08-26 11:07:26 406

原创 2105 给植物浇水二

题目描述Alice和Bob同时从两端开始给一排植物浇水,Alice从左到右,Bob从右到左。当水罐水量不足时需要重新灌满。如果两人相遇,水量多的一方负责浇水。要求计算两人重新灌满水罐的总次数。 解答采用双指针法模拟浇水过程:Alice和Bob分别从左右两端开始遍历植物数组,每次检查当前水量是否足够,不足则重新灌满并计数。当两人相遇时,比较剩余水量决定由谁浇水,若都不足则需重新灌满。最终时间复杂度为O(n),空间复杂度O(1)。 示例代码中通过双指针a和b分别从两端向中间移动,维护两人当前水量,在相遇时进行特

2025-08-26 11:06:50 386

原创 611 有效三角形个数

摘要 给定一个非负整数数组,统计可以构成三角形的三元组个数。解题思路是先将数组降序排序,然后使用双指针法:固定最长边作为第一条边,左右指针分别指向次大和最小边。若两边之和大于最长边,则中间的边都能满足要求,计入结果并移动左指针;否则移动右指针。时间复杂度为O(n^2),空间复杂度O(1),有效解决了三角形构成条件的判断问题。

2025-08-26 11:06:15 371

原创 167 两数之和二

本题要求在非递减数组中找到两数之和等于目标值的下标。提供了两种解法:1)对向双指针法,利用数组有序特性,通过调整左右指针位置快速定位;2)哈希表法,存储元素值及其索引,通过查询补数快速匹配。两种方法均满足O(1)空间复杂度要求,其中双指针法时间复杂度为O(n),哈希表法为O(n)但需额外空间。题目保证唯一解,且下标从1开始计数。

2025-08-26 11:05:40 303

原创 125 验证回文串

本文介绍了一个验证字符串是否为回文串的算法。题目要求将字符串转换为小写并移除所有非字母数字字符后,判断正反读是否相同。文章提供了Python解法,使用双指针方法:从字符串两端向中间遍历,跳过非字母数字字符,比较对应字符是否相同。时间复杂度为O(n),空间复杂度为O(1)。示例代码清晰展示了实现逻辑,包括处理边界条件和字符比较的过程。

2025-08-26 11:05:01 381

原创 42 接雨水

题目要求计算柱子排列后能接多少雨水。提供了两种解法:1)双指针法,通过比较左右两侧的最大高度,逐步计算每个位置能接的雨水量;2)前后缀法,预先计算每个位置的左右最大高度,取较小值减去当前高度得到雨水量。两种方法时间复杂度均为O(n),空间复杂度上双指针更优。示例输入[0,1,0,2,1,0,1,3,2,1,2,1]输出6,[4,2,0,3,2,5]输出9。

2025-08-26 11:04:05 250

原创 18 四数之和

摘要 题目要求在给定整数数组nums中找出所有不重复的四元组,使其和等于目标值target。通过排序数组和多重循环优化,算法先固定前两个数,再用双指针法寻找后两个数。关键优化包括:跳过重复元素、提前终止不可能的组合。时间复杂度为O(n³),适用于数组长度≤200的情况。示例显示该方案能正确处理包含重复元素和极端值的情况。

2025-08-26 11:03:35 387

原创 16 最接近的三数和

摘要 该题目要求在给定整数数组中找到三个数,使其和最接近目标值。解法采用排序加双指针策略:首先对数组排序,然后遍历数组,对每个元素使用双指针寻找最优组合。通过比较当前和与目标值的差值来更新最接近的结果。当找到等于目标值的组合时直接返回。时间复杂度为O(n²),空间复杂度为O(1)。示例表明该算法能正确处理正负数组合及全零情况。

2025-08-26 11:02:59 402

原创 15 三数之和

摘要: 本文介绍了如何在一个整数数组中找到所有不重复的三元组,使其和为0。通过先排序数组,再使用双指针法遍历,固定一个元素后,在剩余部分寻找两数之和等于目标值的组合。算法通过跳过重复元素来避免重复解,时间复杂度优化至O(n²)。示例展示了代码的输入输出及解释,适用于长度3000以内的数组。

2025-08-26 11:01:47 277

原创 11 盛最多水的容器

摘要: 题目要求在给定的整数数组中找到两条垂线,使它们与x轴构成的容器能盛最多水。采用双指针法,初始化左右指针分别指向数组两端,计算当前面积后,移动较小高度的指针向内收缩,逐步更新最大面积值。时间复杂度为O(n),空间复杂度O(1)。示例输入[1,8,6,2,5,4,8,3,7]输出49,对应蓝色区域的最大盛水量。

2025-08-26 11:01:17 288

原创 2 两数相加

这个和数组是完全不一样的使用方法,他的只有通过遍历整个链表才能进行相应的节点位置的判定。这个题目最大的难点其实不是思路上的问题,而是对于自定义的单链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。仅仅表示的是当前节点的数据值而非所有的数据值。的方式存储的,并且每个节点只能存储。的用法之后便可以进行程序的编写了。类进行适当的解释和使用。d的定义代码是下面这个。

2025-08-26 11:00:20 352

原创 1 两数之和

文章摘要 本文介绍了LeetCode经典题目"两数之和"的两种解法:暴力枚举法和哈希表法。暴力枚举法通过双重循环遍历所有组合寻找和为target的两个数,时间复杂度O(n²)。哈希表法利用字典存储数值和索引,通过一次遍历实现快速查找,时间复杂度O(n)。两种方法都能正确解决问题,但哈希表法效率更高。文中提供了Python实现代码,并包含示例说明。

2025-08-24 12:26:44 252

原创 6 线性回归算法

本文介绍了线性回归算法的基本原理和实现方法。首先通过房价预测的例子引入线性回归概念,指出影响因素(如时间、位置、面积等)对结果的不同权重关系。在数学建模部分,详细推导了单变量和多变量线性回归的表达式,包括输入向量、权重向量、偏移量等参数的设定。重点展示了评价函数(损失函数)的构建过程,并通过矩阵运算推导显示解,最终得出权重向量的最优解公式。文章还提供了Python代码实现所需的库函数导入。线性回归作为深度学习的基础算法,本文通过数学推导和代码准备为其后续学习打下基础。

2025-08-24 12:23:31 406

原创 4 利用annaconda进行环境的配置

本文介绍了使用Anaconda搭建多个Python虚拟环境的过程,包括基础环境、looking环境(用于OpenCV学习)、manim环境(数学动画制作)和d2l环境(深度学习)。详细说明了各环境的创建方法、常用conda命令、库安装步骤及注意事项,尤其强调了清华镜像源的使用。其中looking环境是原DL环境崩溃后重建的专门用于计算机视觉的环境,manim环境需要额外安装ffmpeg工具。文章提供了完整的命令行操作流程,适合Python多环境管理的初学者参考。

2025-08-22 15:08:14 914

原创 3 git 的配置

这篇文章详细介绍了Git和VSCode的下载、安装与配置流程,帮助用户实现本地代码版本管理和远程存储。主要内容包括: Git的下载安装步骤(Windows系统) Git配置过程中的各选项说明 VSCode的安装指引 如何在VSCode中创建本地仓库并与Git集成 文件路径管理的注意事项 文章配有详细截图,逐步指导用户完成环境搭建,适合需要管理代码版本的开发者参考使用。

2025-08-22 14:57:59 1066

原创 2 visio激活方法

Visio 的激活方法。

2025-08-22 14:48:45 3040 11

原创 5 自动求导

本文介绍了深度学习中的自动求导原理与实现。首先回顾了标量和向量的链式求导法则,通过三种不同情况展示了向量求导的形状和大小变化。接着通过两个具体例题演示了链式法则的应用过程。然后详细讲解了计算机自动求导的两种模式:正向传递和反向传递,并比较了它们的区别。最后使用PyTorch框架实现了简单的自动求导功能,展示了如何计算梯度并访问梯度值。文章为理解深度学习中的自动求导机制提供了理论基础和代码示例。

2025-08-21 23:00:24 566

原创 4 矩阵计算(求导方面)

本文介绍了矩阵计算中的求导方法,主要聚焦于标量、向量与矩阵之间的导数关系。首先定义了标量、向量和矩阵的表示方法,然后详细讲解了标量导数的基本公式和特殊情况处理(如不可导函数的亚函数概念)。接着分析了向量与标量混合求导的四种情况,并给出具体示例说明如何计算向量对向量的导数(结果为一个矩阵)。最后总结了向量导数计算的基本规则:当y为向量时结果竖排,x为向量时结果横排。这些矩阵求导知识在深度学习和优化算法设计中具有重要应用价值。

2025-08-21 14:37:45 794

原创 3 线性代数

本文介绍了线性代数的基本概念及其在Python中的实现方法。主要内容包括:1)标量、向量和矩阵的基本运算规则,如加减乘除、点乘、长度计算等;2)矩阵的特殊性质,如正交矩阵、特征值和特征向量;3)使用PyTorch库创建标量、向量和矩阵的代码示例,包括全1矩阵、全0矩阵和连续自然数矩阵的生成方法。文章强调矩阵运算在深度学习中的重要性,并推荐3Blue1Brown的线性代数教程作为补充学习资源。最后给出了Python环境下实现这些运算的代码片段,帮助读者理解如何将线性代数理论转化为实际编程操作。

2025-08-19 16:53:26 951

原创 2 数据操作和数据预处理

摘要 本文介绍了数据操作和预处理的基本概念,重点讲解了N维数组的几种形式:标量(0维)、向量(1维)、矩阵(2维)以及更高维数组。详细说明了使用PyTorch进行数组创建、元素访问和数学运算的方法,包括形状变换、合并、求和等操作。在数据预处理部分,演示了如何处理缺失值、离散值转换和数据类型转换等常见预处理步骤,最终将数据转换为适合深度学习使用的32位浮点型张量。文章通过代码示例展示了从数据加载到预处理的全过程。

2025-08-19 10:12:52 308

原创 【无标题】

如此一来该公式的答案为。下面分别计算两组定积分。

2025-07-28 12:14:19 236

d2hbook 深度学习相关知识

d2hbook 深度学习相关知识

2025-08-26

空空如也

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

TA关注的人

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