自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构-广义表

⑦表尾:当广义表非空时,其余元素组成的表 getTail(B)=(e) getTail((a))=()⑥表头:当广义表非空时,第1个元素 getHead(B)=d getHead((a))=a。③C=(b,(c,d)),C有两个元素,分别是原子b和广义表(c,d),长度为2,深度为2。④D=(B,C),D的元素全是广义表(B和C),长度为2,深度为3。②B=(d,e),B的元素全是原子(d,e),长度为2,深度为1。⑤E=(a,E),E有2个元素,长度为2,无限深。

2024-09-03 16:26:19 330

原创 数据结构-查找

①目的:提高查找,插入和删除关键字的速度②定义:左(右)子树上的所有节点均小于(大于)根节点的值 (对二叉排序树进行中序遍历,可以得到一个递增的有序序列)①目的:避免树的高度增长过快,降低二叉排序树的性能,适用于以查为主,很少删/插的场景②定义:左子树和右子树的高度之差的绝对值不超过1。

2024-08-15 17:27:34 1056 1

原创 数据结构-图

邻接矩阵邻接表十字链表邻接多重表空间复杂度O(V^2),V为顶点数无向图:O(V+2E),有向图:O(V+E)O(V+E)O(V+E)找相邻边遍历行/列找有向图的入度遍历整个邻接表方便方便删除边或顶点边-方便顶点-移动大量数据都不方便方便方便适用于稠密图稀疏图+其他只能存有向图只能存有向图表示方式唯一不唯一不唯一不唯一①最小生成树:权值之和最小的生成树(一个连通图的生成树包含图的所有顶点,并且只含尽可能少的边)

2024-08-07 10:08:30 305

原创 数据结构-树与二叉树

1.1 树的度:节点的最大度数1.2 节点的深度:节点所在层次1.3 树的高度/深度:节点的最大层数1.4 节点的高度:以该节点为根的子树的高度1.5 节点间路径长度:路径上所经过的边的个数1.6 树的路径长度:从树根到每个节点的路径长度的总和。

2024-08-02 19:39:20 555

原创 数据结构-串

1.如下,当j指向3时,next[3]=1,那么我们找到j=1的字符,发现3所示字符和1所示字符相等,都是a,则把1所示字符的nextval值给3。2.假设当i指向3时,失配,那么我们需要将模式串往后移动,直到3之前的序列时相同的,那么此时j指向的值就是next[j]的值了。next[j]含义:当子串的第j个字符与主串发生失配时,跳到子串的next[j]的位置重新与主串当前位置进行比较。注:若串的位序从1开始,则next数组才需要整体+1,若从0开始,不需要整体+1。最坏时间复杂度:O(n*m)

2024-08-01 16:41:54 357

原创 数据结构-栈、队列、数组

否则,从栈顶开始依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,直到遇到一个优先级低于它或遇到"(",之后将当前运算符入栈。前i-1行有:3(i-1)-1个元素 aij是第i行的第j-i+2个元素 所以aij是第2i+j-2个元素,放在下标为2i+j-3的位置。(n-j+2) + (i-j)+1 (下标从0开始) n+n-1+n-2+…--B的下标从0开始,[0,n(n+1)/2 -1]--B的下标从0开始,[0,3n-1] 总共有3n-2个元素。

2024-07-21 19:20:34 234

原创 数据结构-线性表

/静态:int length;}SqList;//动态:int *data;}SqList;动态分配并不是链式存储,同样属于顺序存储结构,物理结构没有变化,依然是随机存取方式,只是分配的空间大小可以在运行时动态决定。int data;LNode* L == LinkList L 前者强调的是一个结点L,后者强调的是一个单链表int data;

2024-07-16 14:04:13 311

原创 数据结构-绪论

特点:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。特点:不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。缺点:每个元素因存储指针而占用额外的存储空间,且只能实现顺序存取。缺点:只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片。特点:根据元素的关键字直接计算出该元素的存储地址,又称哈希存储。特点:在存储元素信息的同时,还建立附加的索引表。优点:随机存取,每个元素占用最少的存储空间。

2024-07-15 15:57:26 410

原创 数据结构-外部排序

把R1,R2分别读入一个块,分别放在2个输入缓冲区中,在内存中对R1,R2进行归并排序,归并后的对象放在输出缓冲区中,若输出缓冲区满了,就将其顺序写到输出归并(R1`)段中,然后清空输出缓冲区,继续存放后续内容。而文件中记录很多,无法将整个文件复制到内存中进行排序,因此,需要将待排序的记录存储在外存上,排序时再把数据一部分一部分地调入内存进行排序,在排序过程中需要进行多次内存和外存之间的交换。2、对这些归并段进行逐趟归并,使归并段逐渐由小到大,直至得到整个有序文件。对r个初始归并段,做k路平衡归并。

2024-06-10 14:47:06 267

原创 C语言程序设计

1、为什么1个字节的存储空间,对于有符号整数,最小值为-128在计算机中,存储的都是补码。对于有符号整数,计算机用最高位表示正负。第一个位(最高位)就不能算,也就是说只有7位, 即2^7=128 个数字,一共正负各128种状态,共256个状态。如果不采用特殊处理,这时候0占用2个编码(10000000和00000000),数据表示范围为-127到-0及+0到127,这样总体上一个字节只有255种状态,因为其中0具有正0和负0之分,这不符合数学意义也浪费一个编码。

2024-05-29 09:15:13 236

原创 数据结构-内部排序

数据结构-内部排序

2024-05-27 18:34:51 239

原创 18.最长递增子序列

给你一个整数数组nums,找到其中最长严格递增子序列的长度。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组的子序列。4最长递增子序列是 [2,3,7,101],因此长度为 4。41。

2023-12-06 15:39:15 392 1

原创 18.二叉树的中序遍历

给定一个二叉树的根节点root,返回它的遍历。[1,3,2]root = [][]root = [1][1][0, 100]递归算法很简单,你可以通过迭代算法完成吗?

2023-12-04 14:20:30 353 1

原创 17.删除排序链表中的重复元素

给定一个已排序的链表的头head删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。

2023-11-29 18:31:42 368 1

原创 16.爬楼梯

假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?n = 22有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶n = 33有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶。

2023-11-29 18:11:09 402 1

原创 15.x的平方根

给你一个非负整数x,计算并返回x的。由于返回类型是整数,结果只保留,小数部分将被不允许使用任何内置指数函数和算符,例如或者x ** 0.5。x = 42x = 828 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。

2023-11-29 17:42:17 351 1

原创 14.二进制求和

给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。

2023-11-27 17:05:12 380 1

原创 13.加一

给定一个由组成的数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储数字。你可以假设除了整数 0 之外,这个整数不会以零开头。[1,2,4]输入数组表示数字 123。[4,3,2,2]输入数组表示数字 4321。[1]

2023-11-27 14:53:23 341 1

原创 12.电话号码的字母组合

给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

2023-11-22 15:28:59 426

原创 11.最后一个单词的长度

单词的长度。

2023-11-21 14:54:55 24

原创 10.搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。时间复杂度:O(logn) 二分算法。请必须使用时间复杂度为。空间复杂度:O(1)

2023-11-21 13:28:26 33

原创 9.找出字符串中第一个匹配项的下标

是从字符串右侧开始匹配str,并返回在字符串中的下标位置;

2023-11-20 20:09:42 21 1

原创 8.移除元素

给你一个数组nums和一个值val,你需要移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下://是以“引用”方式传递的。也就是说,不对实参作任何拷贝// 在函数里修改输入数组对于调用者是可见的。

2023-11-20 19:44:24 24 1

原创 7.删除有序数组中的重复项

给你一个的数组nums,请你删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsnumsk系统会用下面的代码来测试你的题解:// 输入数组// 长度正确的期望答案// 调用i < k;i++) {如果所有断言都通过,那么您的题解将被。函数应该返回新的长度不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度。

2023-11-20 14:16:52 70 1

原创 6.合并两个有序链表

将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。[][0]l2。

2023-11-18 12:19:39 30 1

原创 5.有效的括号

给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。

2023-11-17 18:09:25 22

原创 4. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。"fl"""输入不存在公共前缀。

2023-11-16 01:36:42 32

原创 3.罗马数字转整数

罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给定一个罗马数字,将其转换成整数。

2023-11-16 00:26:50 39

原创 2.回文数

例:1221,当我们反转一半,12 21,与此同时,把21反转到revertednumber中,比较x和revertednumber的大小,若相等,则是回文。1234,当我们反转一半,12 34 ,与此同时,revertednumber为43,与x不相等,则不是回文。而对于奇数,比如12321,3不需要计算,在循环末尾,x为12,revertednumber为123,%10后即可。时间复杂度:O(log⁡n),对于每次迭代,我们会将输入除以 1010,因此时间复杂度为 O(log⁡n)。

2023-11-16 00:14:55 33 1

原创 1. 两数之和

给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。[0,1]因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。[1,2][0,1]你可以想出一个时间复杂度小于O(n2)的算法吗?

2023-11-15 00:00:43 25

空空如也

空空如也

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

TA关注的人

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