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

相关推荐
镜花水月linyi4 分钟前
Java 线程创建的完整链路:从 Java 层 → JVM 层 → 操作系统层
java·后端·面试
电饭叔7 分钟前
TypeError:unsupported operand type(s) for -: ‘method‘ and ‘int‘
开发语言·笔记·python
zfj32110 分钟前
排查java应用内存溢出的工具和方法
java·开发语言·jvm·内存溢出
橘子真甜~12 分钟前
C/C++ Linux网络编程13 - 传输层TCP协议详解(面向字节流和有连接)
linux·运维·服务器·c语言·网络·c++·tcp/ip
yugi98783813 分钟前
MATLAB在卫星姿态控制系统中的应用
开发语言·matlab
jianfeng_zhu15 分钟前
不带头节点的链式存储实现链栈
数据结构·算法
lightqjx17 分钟前
【算法】双指针
c++·算法·leetcode·双指针
历程里程碑20 分钟前
C++ 7vector:动态数组的终极指南
java·c语言·开发语言·数据结构·c++·算法
ss27320 分钟前
高并发读场景:写时复制容器(Copy-On-Write)
java·开发语言·rpc
czhc114007566320 分钟前
c# 1213
开发语言·数据库·c#