手撕C语言题典——消失的数字

目录

前言

一,思路

1)排序查找排序查找)

2)数据求和,依次减去中值

[3) 异或](#3) 异或)

二,异或的代码实现


前言

依旧是一道力扣上的题,通过不同思路的不同时间复杂度来分析,让我们看看有什么不同。

面试题 17.04. 消失的数字 - 力扣(LeetCode)https://leetcode.cn/problems/missing-number-lcci/description/

题目很简单,我们先不考虑题目要求的时间复杂度,单纯从思路来看,然后再计算相对应的时间复杂度 。

一,思路

1)排序查找

最简单的也是最容易想出来的思路:

我们只需要对数据进行排序,再依次遍历,如果发现下一个数不是上一个数据+1,则这个数就是消失的数。

2)数据求和,依次减去中值

贴一下笔记:

3) 异或

异或只需要知道 相同的值异或之后是零,比如 1^1 = 0,后面会出一期详细讲一下异或的性质和应用。

二,异或的代码实现

cpp 复制代码
int missingNumber(int* nums, int numsSize){
    int N = numsSize;
    int x = 0;
    for(int i=0;i< numsSize;++i){
        x ^= nums[i];
    }
    for(int j=0;j <= N;++j){
        x ^=j;
    }
    return x;
}

因为只有简单的循环且并没有嵌套,同样异或的时间复杂度也是O(N)

相关推荐
16月6日-晴17 分钟前
Java面向对象——接口
java·开发语言
桐盛科技30 分钟前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算
wuyk55531 分钟前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
geovindu32 分钟前
CSharp: Wordcloud
开发语言·后端·c#·.net·.netcore·词云
Tongzhi202636 分钟前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
Java小白笔记1 小时前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip
Persistent的粽子!1 小时前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
eBest数字化转型方案1 小时前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法
weixin_440730501 小时前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest
geovindu2 小时前
CSharp: Command Pattern
开发语言·后端·c#·.net·.netcore·命令模式·行为模式