- 博客(20)
- 收藏
- 关注
原创 数值积分:通过复合梯形法计算
在物理学和工程学中,很多问题都可以通过数值积分来求解,特别是当我们无法得到解析解时。数值积分是通过计算积分区间内离散点的函数值来近似积分的结果。在这篇博客中,我将讨论如何使用来进行数值积分,并以一个简单的计算为例,展示如何使用该方法,并附带Matlab程序。
2025-02-14 23:28:37
1068
原创 代码随想录算法训练营第四天 | (第二章) 142. 环形链表 II
2.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。判断链表中是否存在环并返回环的起始节点,可以使用 Floyd 判圈算法(快慢指针)。1.给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。3.不允许修改链表。
2025-01-27 20:43:40
894
原创 代码随想录算法训练营第四天 | (第二章) 面试题 02.07. 链表相交
无论是否有相交点,两指针总会同时走完 a + b + c 的路程,在最后同时指向相交点(或 None)。• 两个指针从头到尾走过的总长度是相同的(链表 A 的长度 + 链表 B 的长度)。• 链表 B 长度为 b + c(b 是非相交部分,c 是相交部分)。• 如果 pA 到达链表 A 的尾部,则切换到链表 B 的头节点。• 如果 pB 到达链表 B 的尾部,则切换到链表 A 的头节点。2. pB 先走完链表 B,然后切换到链表 A,走完 a 的部分。• 因此,如果两个链表相交,它们会在相交点相遇。
2025-01-26 15:52:50
293
原创 代码随想录算法训练营第四天 | (第二章) 19.删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。• 空间复杂度: O(1) ,只使用了常量级别的额外空间。输入:head = [1,2,3,4,5], n = 2。• 时间复杂度: O(n) ,只遍历链表一次。该方法简单且高效,只需遍历链表一次即可。输出:[1,2,3,5]个几点,即删除正向第。
2025-01-25 20:46:12
710
原创 代码随想录算法训练营第四天 | (第二章) 24.两两交换链表中的节点
这个问题要求我们交换链表中每一对相邻的节点,且只允许交换节点本身,而不修改节点的值。我们可以使用迭代法来解决这个问题,利用指针操作交换节点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。• 时间复杂度:O(n),其中n是链表的长度。我们只需要遍历一遍链表,处理每对相邻的节点。• 空间复杂度:O(1),我们只使用了常量的额外空间(除了输入链表和输出链表外)。
2025-01-19 20:31:10
359
原创 代码随想录算法训练营第三天 | (第二章) 206. 反转链表
在我们调用reverseList(1)时,它首先会递归调用reverseList(2),然后是reverseList(3),依此类推,直到递归到链表的最后一个节点。• 递归深度:当你调用reverseList(1)时,实际上是先调用了reverseList(2),然后是reverseList(3),依此类推,直到调用reverseList(5)。当递归到最底层,即链表的最后一个节点5时,递归返回。• 递归返回时的顺序:每一层递归会先处理链表的下一个节点,直到递归到链表的最后一个节点。
2025-01-18 21:36:28
844
原创 什么叫面向对象的编程
面向对象(Object-Oriented Programming, OOP)是一种编程范式,它将程序设计围绕“对象”展开。对象是现实世界实体的抽象,每个对象都有自己的属性(描述对象的特征)和方法(描述对象的行为)。这种编程思想让程序结构更接近人类对现实世界的理解,从而提高代码的可读性、可维护性和可扩展性。
2025-01-02 23:08:18
461
原创 代码随想录算法训练营第三天 | (第二章) 203. 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。python中赋值语句,总是建立对象的引用值,而不是复制对象。*2 变量名本身是没有类型的,类型只存在对象中,变量只是引用了对象。*3 所有的变量,必须在使用前 赋值,使用未赋值的变量会产生错误。*1 第一次赋值时,即创建,之后再次赋值将会改变变量的值。*3 赋值操作时,自动建立变量和对象之间的关系,即引用。*1 在Python中,从变量到对象的连接,称为。
2025-01-02 23:00:21
666
原创 代码随想录算法训练营第三天 | (第二章) 链表理论基础
链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。
2024-12-31 22:33:07
908
原创 代码随想录算法训练营第二天 | 44. 开发商购买土地
然而,由于城市规划的限制,只允许将区域按横向或纵向划分成两个子区域,而且每个子区域都必须包含一个或多个区块。为了确保公平竞争,你需要找到一种分配方式,使得 A 公司和 B 公司各自的子区域内的土地总价值之差最小。在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。目前,有两家开发公司,A 公司和 B 公司,希望购买这个城市区域的土地。现在,需要将这个城市区域的所有区块分配给 A 公司和 B 公司。请输出一个整数,代表两个子区域内土地总价值之间的最小差距。
2024-12-31 17:27:52
586
原创 代码随想录算法训练营第二天 | 58. 区间和
第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间下标:a,b (b > = a),直至文件结束。给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。输出每个指定区间内元素的总和。
2024-12-30 21:15:18
781
原创 代码随想录算法训练营第二天 | 59.螺旋矩阵II
覆盖所有方向的填充螺旋填充涉及四个方向(从左到右,从上到下,从右到左,从下到上),每个方向都需要一个明确的边界来控制填充范围:• 从左到右填充时,用 left 和 right 确定列的范围。• 从上到下填充时,用 top 和 bottom 确定行的范围。• 从右到左填充时,用 right 和 left 确定列的范围。• 从下到上填充时,用 bottom 和 top 确定行的范围。控制动态收缩每次填充后,相应边界会更新,缩小矩阵的有效区域。
2024-12-30 15:56:56
848
原创 代码随想录算法训练营第二天 |209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target。找出该数组中满足其总和大于等于 target 的长度最小的子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0。输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。输入:target = 4, nums = [1,4,4]输出:1。
2024-12-29 19:42:09
687
原创 代码随想录算法训练营第一天 |977.有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]
2024-12-29 17:41:29
172
原创 较舒适地安装Python Packages,相比于直接在pycharm中装
file->settings->Project:python->python interpreter->齿轮->Conda Environment->Existing Environment->Interpreter->D:\annconda3\envs\tn\python.exe。可以看到已经有系统默认虚拟环境(base)进入了刚创建的环境(tn)安装的这个包会存储在我们之前创建的虚拟环境中。
2023-04-24 20:53:22
110
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人