3.7 数据结构 时间复杂度 和空间复杂度 计算
1.空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用
了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计
算规则基本跟实践复杂度类似,也使用大O渐进表示法.-
就是一段函数在堆栈中开辟的堆栈大小
1.
2.
3.递归
1.面试题
面试题 17.04. 消失的数字
点击查看代码
int missingNumber(int* nums, int numsSize){
for(int i=0;i<numsSize;i++)
{
1.方法
//先排序 1 2 3 4 5 6 7 9 排成这样
代码块
冒泡排序
for(int i=numsize-1;i>0;i--)
for(int j=0;j<i;j++)
{
if(nums[i]>nums[i+1])
{
int tmp=nums[i];
nums[i]=nums[i+1];
nums[i+1]=tmp;
}
}
/*
1<n<max
再次循环
看看有没有相等的
*/
for(int z=0;z<numsize;z++)
{
if(nums[z+1]-nums[z]!=1)
{
return nums[z+1]-1;
}
}
if(nums[0])
return 0;
时间复杂度 O(N2)
}
2.
num2-nums=x;就是最后的那个值
int sum1;
int sum2;
for(int i=0;i<numsSize;i++)
{
sum1=sum1+nums[i];
}
//
for(int i=0;i<numsSize+1;i++)
{
sum2=sum2+i;
}
sum2=sum2-sum1;
return sum2;
时间复杂度o(n)
}
3.//异或
相同为0 不同为1
int x=0;
for(int i=0;i<numsSize;i++)
{
x=x^nums[i];
}
for(int j=0;i<numsSize+1;j++)
{
x=x^j;
}
点击查看代码
void Remove(int* nums,int left,int right)
{
while(left<right)
{
int tmp=nums[left];
nums[left]=nums[right];
nums[right]=tmp;
++left;
--right;
}
}
void rotate(int* nums, int numsSize, int k){
/*
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]
*/
if(k>=numsSize)
{
k=k%numsSize;
}
Remove(nums,numsSize-k,numsSize-1);
Remove(nums,0,numsSize-1-k);
Remove(nums,0,numsSize-1);
}
本文来自博客园,作者:逆向狗,转载请注明原文链接:https://www.cnblogs.com/Agtw/p/17173828.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现