- 博客(13)
- 收藏
- 关注
原创 Introduction to Algorithms-分治策略
简单的尝试每对可能得买进和卖出日期组合,只要卖出日期在买入日期之后即可。n天中共有种日期组合。因为,而处理每对日期所花费放入时间至少也是常量,因此,这种方法的运行时间为。
2025-03-06 12:01:23
839
原创 Leetcode day 3
双指针代表的是可以作为容器所有位置的范围。从一开始,双指针指向数组的左右边界,表示数组中所有的位置都可以作为容器的边界,因为我们还没有进行任何的尝试。在这之后呢,我们每次将对应的数字较小的指针往另一个指针的方向移动一个位置,就表示这个指针不能再作为容器的边界了。把0视作空位,我们要把所有非0元素都移动到数组左边的空位上,并保证非零元素的顺序不变。
2024-12-30 23:15:13
133
原创 Leecode day2
第一个算法两个先后指针同步后移,发现非0元素则放到数组第一个位置,直到把数组遍历完。第二个元素设置左右两个指针,看右指针,不为0就交换,然后同步移动,这样也可以保证元素的相对顺序。算法思想:设置双指针,左指针指向数组的头部,右指针指向数组的尾部,如果右指针指向数组元素不为0,则与左指针所指元素进行交换;算法思想:将0视作空位,把所有非0元素都移动到数组左边的空位上,并保证所有非0元素相对顺序不变。移动0, 编写一个函数将0移动到数组的末尾,同时保持非0元素的相对顺序。空间复杂度:O(1)
2024-12-26 09:01:48
106
原创 leecode day1 两数之和
算法思想:使用暴力求解法来解决问题,将数组中的每一个元素进行枚举,注意到枚举的先后顺序,i=0,1...,n-1,则j=i+1,....,n。算法思想:这种方法还是比较巧妙的,利用hash表的性质,类似于逆用hashtable了。
2024-12-23 21:58:10
210
原创 Daily practices
已知在一维数组A[m+n]中依次存放两个线性表(a1,a2...am)和(b1,b2,....,bn),试编写一个函数,将数组中的两个顺序表的位置互换,即将(b1,b2,....,bn)放在(a1,a2...am)前面。在顺序表中删除其值在给定s与t之间(包含s和t,要求s
2024-11-28 14:20:31
345
原创 查找123
二叉排序树要么是一棵空树,要么满足下列性质的二叉树:1、若左子树非空,则左子树上的值均小于根结点的值2、若右子树非空,则右子树上的值均大于根结点的值3、左、右子树也是一棵二叉排序树基于以上性质,容易得出,二叉排序树按照中序遍历可以得到一个从小到大的序列。二叉排序树是一种动态查找表,既可以在查找过程中插入表中不存在的数据元素,也可以删除已经存在的某个元素。下面介绍二叉排序树的检索、插入和删除算法。
2024-10-11 20:39:49
1002
原创 数算学习整理
对于B,删除首结点*p时,需要找到*p结点,而又未指出头结点指针,通过尾结点的prior指针找到*p结点的时间复杂度为O(n)。...sum=0+1+2+3+...+i = (1+i)*i/2,要使sum
2024-09-24 21:50:43
902
原创 排序算法(易懂版)
快速排序的运行时间与划分是否对称有关,快速排序的最坏情况发生在两个区域分别包含n-1个元素和0个元素时,这种最大程度的不对称性若发生在每层递归上,即对应于初始排序表基本有序或者基本逆序时,就得到最坏情况下的时间复杂度O(n^2)。建堆时间为O(n),之后有n-1次向下调整操作,每次调整的时间为O(h),所以在最好、平均、最坏情况下,堆排序的时间复杂度为O(nlogn)。如果存在多个具有相同排序码的记录,经过排序后这些记录的相对次序仍然保持不变,这种排序算法称为“稳定的”,否则称为“不稳定的”。
2024-09-18 21:35:17
913
原创 数算学习——图的应用
是指从图中的某一个顶点出发,按照一定的策略将图中的所有顶点访问一一遍,使得每个顶点被遍历且都遍历一次。容易看出,是一种特殊的图,所以树的遍历实际上也是一种特殊的图的遍历,图的遍历是树的遍历的一般化形式。图的遍历比树的遍历复杂,因为图中的每一个顶点都可能与其他顶点相连。也就是说,在访问过某个顶点之后,还是可能经过其他路径之后这个顶点。为了避免重复访问一个顶点,在遍历图的过程中应当判断顶点是否被访问,若已被访问则不再访问。图的遍历有和两种基本形式,对于和都适用。
2024-09-09 14:58:59
1355
原创 数算学习——树
二叉树是一种特殊的树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。与树相似,二叉树也以递归的形式定义。二叉树是n(n>=0)个结点的有限集合:(1)或者为空二叉树,即n=0。(2)或者由一个根节点和互不相交的被称为根的左子树和右子树组成。左子树和右子树又分别是一棵二叉树。下图为二叉树的几种形态:二叉树是有序树,若将其左、右颠倒,则成为另外一棵不同的二叉树。即使树中结点只有一棵子树,也要区分它是左子树还是右子树。
2024-09-04 15:18:33
1066
原创 数组(补充)
数组是相同类型数据的有序集合。数据描述的是相同类型得到数据按照一定先后次序排列组合而成。每一个数据成为一个元素,每个元素可以通过下标的方式访问它们。数组的定义的一般方式为:“”,需要注意的是,常量表达式用来表示数组长度,它的下标是从0开始的。
2024-07-21 14:27:52
1718
原创 串(KMP算法详分析)
字符串简称计算机上非数值处理的对象基本上都是字符串数据,它以由空格或多个字符组成的有限序列。一般即为:其中,S是串名,单引号括起来的是串的值;可以是字母、数字或者其他字符;串中字符的个数n称为串的长度。n=0时的串称为(用表示)。是指只包含空格的串。它与空串不同,空格串是有内容有长度的,而且可以不止一个空格。串中任意个数的连续字符组成的子序列称为该串的,相应地,包含子串的串称为。子串在主串中的位置就是子串的第一个字符在主串中的序号。
2024-07-11 14:40:07
1424
原创 栈、队列、数组和串
队列(queue)是一种在一端进行插入,另一端进行删除的受限的线性表。队列是一种先进先出(First In First Out)的线性表,允许进入的一端成为队尾(rear),允许删除的一端称为队头(front)。2、队列常见基本操作创:InitQueue(&Q)判空:IsEmpty(Q)增:EnQueue(&Q,p)删: DeQueue(&Q,p)查:GetHead(&Q,x)由于队列是受限的线性表,并不是所有针对线性表的操作都合适。像是从队列中读取某个中间的元素。
2024-07-01 14:29:40
1437
1
空空如也
机器学习keras中regressor
2024-04-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人