【快乐手撕LeetCode题解系列】——消失的数字

这篇具有很好参考价值的文章主要介绍了【快乐手撕LeetCode题解系列】——消失的数字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


【快乐手撕LeetCode题解系列】——消失的数字

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
【快乐手撕LeetCode题解系列】——消失的数字

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【快乐手撕LeetCode题解系列】——消失的数字~ 都是精华内容,可不要错过哟!!!😍😍😍

消失的数字🙌

【快乐手撕LeetCode题解系列】——消失的数字

做题准备:

  • 首先认真审题,冷静分析,先尽量找到解决问题的所有算法,然后再从陈中选择最好的算法。
  • 这里一共将介绍三种解题方法,并分析出每一种算法的时间复杂度和空间复杂度,分享我的一些解题经验

解题思路分析:😍

解题思路一 :源代码分享:😍
  • 首先通过malloc函数动态开辟一个数组,将原来nums数组中的每一个元素存放到开辟的p数组对应的下标位置里面;
  • 然后对数组p的元素全部赋值为-1,只要不是0~n的数字就行了;
  • 将nums数组的元素存放到p数组对应的数组下标的位置上。例如将3存放到p[3]位置上。
  • 最后遍历一遍数组p,还存放着-1的位置的数组下标 i 就是那个消失的数字
int missingNumber(int* nums, int numsSze)
{
    int *p = (int*)malloc(sizeof(int)*(numsSze+1));
    int i = 0;
    for (i = 0; i < numsSze + 1; i++)
    {
        p[i] = -1;
    }
    for (i = 0; i < numsSze; i++)
    {
        p[nums[i]] = nums[i];
    }
    for(i = 0 ; i < numsSze + 1; i++)
    {
        if(p[i] == -1)
        return i;
    }
    return 0;
}
解题思路二 :源代码分享:😍
  • 利用异或的思路,将消失的数字找出来。
  • 首先先让 x 赋值为0;
  • 然后让 x 和 0 到 numsSze 的数字进行一个异或;
  • 再让 x 和 nums数组的每一个元素进行一个异或;
  • 而我们的答案就是只出现一次的数字;
  • 最后异或的结果就是我们要求的消失的数字啦!
  • 0 的任何数异等于它本身;
  • 相同的数异或为0
int missingNumber(int* nums, int numsSze)
{
    int x = 0;
    int i = 0;
    for(i = 0; i < numsSze; i++)
    {
        x ^= nums[i];
    }
    for (i = 0; i < numsSze + 1; i++)
    {
        x ^= i;
    }
    return x;
}
解题思路三 :源代码分享:😍
  • 数学公式法求解此题。这里可以运用等差数列的求和公式 来求解
  • 等差数列的求和公式 :(首项 + 最后一项) x 项数 / 2。
  • 利用公式将所有的完整顺序的所有数字都相加起来,然后减去nums数组的每一个元素,剩下的就是那个消失的数字啦!
int missingNumber(int* nums, int numsSze)
{
    int x  = (0 + numsSze)*(numsSze + 1) / 2;
    int i = 0;
    for (i = 0 ; i < numsSze; i++)
    {
        x -= nums[i];
    }

    return x;
}

程序输出结果验证: 😊【快乐手撕LeetCode题解系列】——消失的数字

总结撒花💞

   本篇文章旨在分享【【快乐手撕LeetCode题解系列】——消失的数字。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘文章来源地址https://www.toymoban.com/news/detail-428440.html

到了这里,关于【快乐手撕LeetCode题解系列】——消失的数字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode消失的数字

    数组 nums 包含从 0 到 n 的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在 O ( n ) O(n) O ( n ) 时间内完成吗? 示例 1: 输入:[3,0,1] 输出:2 leetcode链接:消失的数字 ⭕️ 思路1: 第一种思路时间复杂度 O ( N ) O(N) O ( N ) ,空间复杂度 O ( N ) O(N) O ( N ) 。

    2024年02月11日
    浏览(35)
  • Leetcode448. 找到所有数组中消失的数字

    题目来源:448. 找到所有数组中消失的数字 set 是一个集合类型的容器,里面的元素具有唯一性,并且所有元素都会根据元素的键值自动被排序,以红黑树为底层数据结构。 我们使用集合set记录nums数组的元素,再遍历set找出找到所有的数组nums中消失的数字。 代码: 结果:

    2024年02月03日
    浏览(44)
  • LeetCode:面试题:消失的数字——时间复杂度

    题目:数组nums中包含0~n的所有整数,但其中缺失了一个数,请写代码找出那个缺失的整数,要求在时间复杂度为O(N)的时间内完成 思路1:冒泡排序+遍历(下一个数不等于上一个数+1,这个下一个数就是消失的数) 世间复杂度O(logN*N) 代码: 运行结果: 思路2:0+N利用等

    2024年02月16日
    浏览(40)
  • 【LeetCode】替换空格&&消失的数字&&分割链表&&除自身以外数组的乘积

    ​🌠 作者:@阿亮joy. 🎆 专栏: 《阿亮爱刷题》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 请实现一个函数,把字符串 s 中的每个空格替换成\\\"%20\\\"。 示例 1: 输入: s = \\\"We are happy.\\\" 输出: \\\"We%20are%2

    2024年02月22日
    浏览(37)
  • (C语言版)力扣(LeetCode)面试题 17.04. 消失的数字5种解法

    该题目取自力扣(LeetCode)面试题 17.04. 消失的数字 链接:消失的数字 该题目主要考察时间复杂度的把握,题目如下: 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例

    2023年04月14日
    浏览(41)
  • 【手撕算法|动态规划系列No.4】leetcode91. 解码方法

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。

    2024年02月12日
    浏览(41)
  • 【手撕算法|动态规划系列No.3】leetcode746. 使用最小花费爬楼梯

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。

    2024年02月12日
    浏览(64)
  • 【手撕算法|动态规划系列No.2】leetcode面试题 08.01. 三步问题

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。

    2024年02月12日
    浏览(64)
  • 【LeetCode算法系列题解】第61~65题

    【题目描述】 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 【示例1】 【示例2】 【提示】 链表中节点的数目在范围 [0, 500] 内 − 100 ≤ N o d e . v a l ≤ 100 -100le Node.valle 100 − 100 ≤ N o d e . v a l ≤ 100 0 ≤ k ≤ 2 ∗ 1 0 9 0le kle 2 * 10^9 0 ≤ k ≤

    2024年02月09日
    浏览(36)
  • 【LeetCode算法系列题解】第46~50题

    【题目描述】 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以按 任意顺序 返回答案。 【示例1】 【示例2】 【示例3】 【提示】 1 ≤ n u m s . l e n g t h ≤ 6 1le nums.lengthle 6 1 ≤ n u m s . l e n g t h ≤ 6 − 10 ≤ n u m s [ i ] ≤ 10 -10le nums[i]le 10 − 10 ≤ n u

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包