IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> leetcode小试牛刀:消失的数字 -> 正文阅读

[数据结构与算法]leetcode小试牛刀:消失的数字

前言

最近,刚刚起步数据结构,浅浅了解了所谓的空间复杂度与时间复杂度,什么最好情况,最坏情况,平均情况,还以为时间复杂度就是计算时间,空间复杂度就是在计算内存。最后才了解到

时间复杂度不计算时间,计算大概的运算次数

空间复杂度不计算空间,计算大概定义的变量个数

实际上,刚接触到数据结构感觉很枯燥且很难,而且现阶段感觉有点迷茫,希望大家可以给些建议。今天,记录自己第一次在leetcode平台上答题,意义非凡,迈出了勇敢的第一步。由于本人目前只学c语言,其他语言暂未学习,因此用c语言小试牛刀一下,本人水平有限,请多担待。

好了,直接进入我们的主题:打开leetcode,看到我们这一道题。这里第一次接触leetcode有点不适应。

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?

注意:本题相对书上原题稍作改动

示例 1:

输入:[3,0,1]
输出:2
?

示例 2:

输入:[9,6,4,2,3,5,7,0,1]
输出:8

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

?看到这里,有什么想法没有,大家先自己看看,有什么想法没有。

我这里想出了两种解法:

第一种解法:异或

相异为1,相同为0(这是解题核心),刚开始这种思路是想不到的,不过题目练多了,这种思路很快就会成为你解决这种问题的第一方法。

这道题中,有一个小细节,那就是比如numsSize=10,就是10个值,但是实际上本来0到10有11个值,具体想清楚一点,就是缺少了一个嘛。想通了这点,这道题就变得非常简单了,先遍历一遍数组,现在我们不知道却哪一个,定义一个未知数int x = 0,因为0跟任何数异或都是任何数。先让数组内的所有数都异或到x上去,相当于x跟数组所有值异或了,唯独没有跟未知数x异或,然后我们在让x异或全部的数(指地是加上x的所有数),想清楚这个问题,最后return x即可。看看我们的代码。实际上,这道题很简单。

int missingNumber(int* nums, int numsSize){
    int x  = 0;
    for(size_t i = 0;i<numsSize;i++)
    {
        x^=nums[i];
    }
    for(size_t i = 0;i<=numsSize;i++)
    {
        x^=i;
    }
    return x;
}

解法二:等差数列求解法

这个解法思路更加简单明了,这就是实际上总数组的和减去本身数组的和最后得出我们究竟消失了哪个数。即最后返回totalsum-sum。

int missingNumber(int* nums, int numsSize){
    int totalsum = (numsSize)*(numsSize+1)/2;
    int sum = 0;
    for(int i =0;i<numsSize;i++)
    {
        sum+=nums[i];
    }
    return totalsum-sum;
}

本次就到这里结束了,谢谢大家的支持与关注。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 14:04:10  更:2021-12-08 14:05:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/10 2:25:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码