关于数组的面试题,面试关于数组的算法题
Yyds干货库存
作者:云晓艺个人主页:云晓洋主页
代码:云小洋(yuxiaoyang 003)-gitee . com
座右铭:你要敢于默默面对自己。强大才是核心。不要等到什么都没有了才下定决心去做。种一棵树最好的时间是十年前,其次是现在!学会和解自己,与过去和解,试着爱自己。希望在春天到来之前,我们一起面朝大海,春暖花开!
专栏:C语言初学者专栏:C语言高级专栏:数据结构与算法
专栏:早期C-高级C-学习Linux
@ TOC
前言:前言:53860 . 48686868686
1.删除等于val的值。原位移除数组中的所有元素val,需要O(N)的时间复杂度和O(1)的空间复杂度。
A.OJ链接:标题链接b .标题描述:
C.题目思路:思路一:找到每个val,依次移动数据覆盖。时间复杂度:O(n ^ 2)
想法2:将val以外的值移动到新数组的时间复杂度:O(N)
空间复杂度:O(N)
想法三:双指针
D.源代码:int remove元素(int * nums,int nums size,int val)
{
int src=0,dst=0;
//for(src=0;src numsSize)
while(src numsize)
{
if(nums[src]==val)
{
src
}
其他
{
nums[dst]=nums[src];
夏令时;
src
}
}
返回dst
} e .运行截图:
2.删除有序数组中的重复项。A.OJ链接:标题链接b .标题描述:
C.主题想法:
D.源代码:int remove duplicates (int * nums,int nums size)
{
int dst=0,SCR=1;
while(SCR numsize)
{
if(nums[scr]==nums[scr-1])
{
scr
}
其他
{
nums[dst]=nums[SCR-1];
夏令时;
scr
}
}
nums[dst]=nums[nums size-1];
夏令时;
返回dst
} e .运行截图:
3.合并两个有序数组。A.OJ链接:标题链接b .标题描述:
C.题目思路:思路一:归并冒泡排序的时间复杂度:O(n ^ 2n * logn)
两个想法:合并的想法
想法三:要求不开辟额外空间。d .源代码:Voidmerge (int * nums1,int nums1 size,int m,int * nums2,int nums2 size,int n)
{
int i=m-1,j=n-1;
int dst=m n-1;
while(i=0 j=0)
{
if(nums1[i] nums2[j])
{
num S1[dst-]=num S1[I-];
}
其他
nums 1[dst-]=nums 2[j-];
}
while(i 0)
{
num S1[dst-]=num S1[I-];
}
而(j=0)
{
nums 1[dst-]=nums 2[j-];
}
} e .运行结果:
最后,非常感谢你耐心的看完我还能坚持写到这里,送上几句话给你我:
1.做更好的自己,而不是完美的他者。2.每个人都愿意做自己喜欢的事,但做自己该做的事,这叫成长。
3.活成一个真正有形的人,而不是——摊肉,乱七八糟的情绪。
放弃很容易,坚持下来很爽。
5.知识不是力量,当知识被使用时,它就是力量。
6.人生只有两种选择,要么忙着去死,要么忙着活着!你能忍,你就出类拔萃;忍不了就出局。你有野心,所以你没有资格停下来。7.白天顺从生活,晚上忠于自己。
最后,如果你觉得我写的不错,请别忘了喜欢,收藏,关注()
让我们一起为美好的未来而努力,让我们从一个懵懂的菜鸟逐渐成为大人物。加油,夸夸自己!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。