手撕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)

相关推荐
武子康1 分钟前
Java-153 深入浅出 MongoDB 全面的适用场景分析与选型指南 场景应用指南
java·开发语言·数据库·mongodb·性能优化·系统架构·nosql
怪兽20144 分钟前
请谈谈什么是同步屏障?
android·面试
kobe_t5 分钟前
数据安全系列7:常用的非对称算法浅析
算法
靠近彗星6 分钟前
3.4特殊矩阵的压缩存储
数据结构·人工智能·算法
rit84324997 分钟前
ES6 箭头函数:告别 `this` 的困扰
开发语言·javascript·es6
尘世中一位迷途小书童11 分钟前
版本管理实战:Changeset 工作流完全指南(含中英文对照)
前端·面试·架构
嵌入式-老费20 分钟前
Easyx图形库应用(用lua开发图形界面)
开发语言·lua
吃饺子不吃馅20 分钟前
【八股汇总,背就完事】这一次再也不怕webpack面试了
前端·面试·webpack
ellis197021 分钟前
Lua协程coroutine库用法
开发语言·lua
来生硬件工程师32 分钟前
【STM32笔记】:P03 ISP 一键下载电路详解
c语言·笔记·stm32·嵌入式硬件·硬件工程·接口隔离原则·硬件设计