- 博客(6)
- 收藏
- 关注
原创 LeetCode-第88题—合并两个有序数组(4种解法)
运用逆指针,nums1后半部分是空的,此时可以将nums2中的数值插入到nums1中,同时并将两个数值中的值进行比较,并将大的数值插入到末尾。运用双指针的方法,通过比较,再分别将nums1和nums2的数值插入到新的数组中,最后把新数组中的数组拷贝到nums1中。compar:指向比较数组的指针,用于确定两个元素的顺序(大于0,返回1.等于0,返回0;先将nums2的数组插入nums1中,再对nums1中的数组进行排列。空间复杂度O(1):原空间移动,不需要额外的空间。空间复杂度O(m+n)
2024-11-06 23:43:16
249
原创 LeetCode-第26题—删除有序数组中的重复项(图解)
思维,运用三个指针,一个指针(prev)指向数组第一位,一个指针(cur)指向数组第二位,这两个指针用于遍历数组,所以,在遍历数组中,这两个指针是相邻的,便于找到数组中相同的两个数。再声明一个指针(dst),用于存储数据。
2024-11-02 18:38:39
175
原创 LeetCode-27-移除元素 (三种解法)
当有相邻两个元素都是所要移除的数据时,i为下标2,在移除2后,数组为0 1 2 3 0 4 2;此时i++,i的下标为三,从而让数组指向数组中的3,所以需要i--;思维:在原数组的基础上操作,将不是val的数移动覆盖到val上(将数组往前移动),这样既做到移除数组,又不改变数组的顺序。思维:运用双指针的方法,一个指针(src)用来遍历,一个指针(dst)用来指定数值(非val)缺点:移除一个数据,便遍历一次数值,所以在极端情况下,时间复杂度为O(n^n)优点:不需要申请新的空间,空间复杂度为O(1)
2024-10-31 21:33:22
475
原创 顺序表--静态数组
因为#define宏定义只是在预处理阶段进行简单的文本替换,它不会改变数组在运行时的内存分配和大小。如果一开始时给定的值(N)过大,就可能会造成空间的浪费;所以,使用静态数组时,给定的数据一定是可知的。如果要强行增容,就需要找到一块更大的连续内存空间来存放新的数据,这在实际操作中是非常困难的。比如,定义一个长度为 5 的整数静态数组 int arr[5] ,这 5 个整数所占用的内存空间在程序运行前就确定好了。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。
2024-10-27 18:51:36
199
1
原创 指针知识点2:野指针(C语言)
理解:当调用这个函数时,这个函数将被返回给操作系统,a的地址便被销毁(释放)了,而p依然能找到这个地址,但是不能使用了。所以,当不知道给指针赋什么值时,就可以写出:int* p=NULL(空指针,本质为0,即指针没有指向)概念:野指针就是指针指向的位置是不可知的(随机的,不准确的,没有明确限制的)1:指针未初始化:int* p;此时再:*p=10;3:指针指向的空间释放。
2024-05-28 14:01:15
604
1
原创 指针知识点1(c语言)
切割成内存单元是––1byte(字节)。把内存单元的编号就称为地址(地址也叫指针),指针其实就是地址,地址就是编号,指针就是内存单元的编号。结论一:指针类型绝对了指针在被解引用的时候访问了几个字节。pa是a的地址,*pa是a地址所指向的内容。int*和float*是不是可以通用?内存单元是如何管理呢?(这里是x86平台)
2024-05-21 15:46:54
613
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅