C语言复杂度(个人笔记)

时间复杂度主要衡量一个算法的运行快慢.

空间复杂度主要衡量一个算法运行所需要的额外空间.

时间复杂度

算法中的基本操作的执行次数,为算法的时间复杂度.

只需要大概执行次数,我们使用大O的渐进表示法。(看谁对数学表达式的影响最大)

空间复杂度

是对一个算法在运行过程中临时占用存储空间大小的量度 。

注意:函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。

笔试题

消失的数字

c 复制代码
//解法一:通过异或运算符实现(两个相同的数异或等于0)
int missingNumber(int* nums, int numsSize)
{
    int ret=0;
    int i=0;
    for(i=0;i<numsSize;i++)
    {
        ret^=nums[i];
    }
    for(i=0;i<numsSize+1;i++)
    {
        ret^=i;
    }
    return ret;
}
//解法二:通过数学方法实现(等差数列)
int missingNumber(int* nums, int numsSize)
{
    int ret=0;
    int i=0;
    for(i=0;i<numsSize+1;i++)
    {
        ret+=i;
    }
    for(i=0;i<numsSize;i++)
    {
        ret-=nums[i];
    }
    return ret;
}

旋转数组

c 复制代码
//三逆置解决
void reverse(int* arr,int left,int right)
{
    while(left<right)
    {
        int tmp=arr[left];
        arr[left]=arr[right];
        arr[right]=tmp;
        left++;
        right--;
    }
}
//另外开辟一块空间,进行拷贝
void rotate(int* nums, int numsSize, int k)
{
    if(k>numsSize)
    {
        k%=numsSize;
    }
    reverse(nums,0,numsSize-k-1);
    reverse(nums,numsSize-k,numsSize-1);
    reverse(nums,0,numsSize-1);
}
相关推荐
東雪木5 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
Oll Correct6 小时前
实验二十九:TCP的运输连接管理
网络·笔记
飞翔中文网7 小时前
Java学习笔记之抽象类与接口(设计思想)
java·笔记·学习
智者知已应修善业8 小时前
【proteus设计文氏正弦波信号发生器】2023-5-9
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
凉、介9 小时前
深入理解 ARMv8-A|处理器模式与寄存器
笔记·学习·嵌入式·arm
.千余10 小时前
【C++】C++类与对象2:C++构造函数、运算符重载与流输入输出全面解析
c语言·开发语言·前端·c++·经验分享
whyTeaFo10 小时前
MIT 6.1810: Lec 5: calling conventions and stack frames RISC-V
笔记
上课不要睡觉了11 小时前
【统计法规】4.1统计管理体制概述
笔记·统计师考试
墨白曦煜11 小时前
算法实战笔记:剥开回溯算法的外衣——从通用模板到高阶去重(八)
笔记·算法
QiLinkOS11 小时前
【用呼吸重构创造价值关系——QiLink生态】
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法