首页 > 其他分享 >【力扣】268.丢失的数字

【力扣】268.丢失的数字

时间:2024-03-23 21:04:07浏览次数:30  
标签:numsSize 数字 nums int 示例 力扣 丢失 268

题目描述

给定一个包含 [0, n]n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

示例 1:

输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 2:

输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 3:

输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。

示例 4:

输入:nums = [0]
输出:1
解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。

提示:

  • n == nums.length
  • 1 <= n <= 104
  • 0 <= nums[i] <= n
  • nums 中的所有数字都 独一无二

进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?

解题方法

  • C 排序法
/* 自定义比较函数 */
int mycmp(int* a, int* b) { return *a - *b; }

int missingNumber(int* nums, int numsSize) {
    /* 由小到大排序 */
    qsort(nums, numsSize, sizeof(int), mycmp);
    /* 遍历数组 索引与值对应不上的即为缺失的元素*/
    for (int i = 0; i < numsSize; i++) {
        if (nums[i] != i) {
            return i;
        }
    }
    return numsSize;
}
  • C 求和法
int missingNumber(int* nums, int numsSize) {
    /* 求 1 + 2 + 3 + .... + numsSize 的和 */
    int sum = numsSize * (numsSize + 1) / 2;
    for (int i = 0; i < numsSize; i++) {
        /* 依次减去数组元素,剩下的即是丢失元素 */
        sum = sum - nums[i];
    }
    return sum;
}

标签:numsSize,数字,nums,int,示例,力扣,丢失,268
From: https://blog.csdn.net/weixin_44550536/article/details/136954861

相关文章

  • 力扣HOT100 - 49. 字母异位词分组
    解题思路:排序注意:返回时不能用List,因为List是抽象类,return的必须是List的具体实现,如ArrayListclassSolution{publicList<List<String>>groupAnagrams(String[]strs){Map<String,List<String>>map=newHashMap<>();for(Stringstr......
  • git分支合并文件丢失问题
    一、产生问题 某些情况下,我们将两个分支进行合并时,在没有提示手动解决冲突的情况下下,文件会丢失。这可能是以下问题导致的。二、问题所在 git分支的合并,并不是多个分支简单的求内容的并集。假设我们有两个分支a与b,并且a与b中有相同的文件名c。当我们对a与b中的文件c内......
  • 记忆化搜索 —— Leetcode 2684. 矩阵中移动的最大次数
    题目如下:给你一个下标从 0 开始、大小为 mxn 的矩阵 grid ,矩阵由若干 正 整数组成。你可以从矩阵第一列中的 任一 单元格出发,按以下方式遍历 grid :从单元格 (row,col) 可以移动到 (row-1,col+1)、(row,col+1) 和 (row+1,col+1) 三个单元......
  • [Kyana]力扣刷题经验一
    滑动窗口11:盛水最多的容器关键:需要找到长的板和长的距离解法一:暴力法,类似冒泡的双重循环,优化后时间复杂度为O(√n),不符合要求。解法二:双指针,从头尾往中间凑,不断更新长板和面积,时间复杂度为O(㏒n),Python3代码如下。classSolution:defsolveProblem(self,height:list)-......
  • 二叉树的深度优先遍历(力扣94,144,145)
    文章目录题目前知二叉树的遍历方式有什么?递归和迭代是什么?题解一、思路二、解题方法三、Code总结题目Problem:144.二叉树的前序遍历Problem:94.二叉树的中序遍历Problem:145.二叉树的后序遍历前知二叉树的遍历方式有什么?二叉树主要有两种遍历方式:......
  • 【力扣sql】高频 SQL 50 题(基础版)
    1174获取即时订单在所有用户的首次订单中的比例。保留两位小数。配送表:Delivery+-----------------------------+---------+|ColumnName|Type|+-----------------------------+---------+|delivery_id|int||custom......
  • Windows7系统themeservice.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个themeservice.dll文件(挑选合适的版本文件)......
  • Windows7系统icfupgd.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个icfupgd.dll文件(挑选合适的版本文件)把它放......
  • 三分钟教你使用EasyRecovery轻松解决U盘数据丢失问题
    EasyRecovery是一款易于使用的数据恢复软件,它可以帮助用户快速恢复误删除、格式化、病毒感染和其它数据丢失情况下的文件。这款软件的出现,为用户解决了数据丢失的烦恼,深受广大用户的喜爱。EasyRecovery的操作非常简单易懂,只需几个简单的步骤,就可以轻松恢复数据。用户只需要打......
  • 【力扣】岛屿数量(体会一下dfs和bfs思路的实质)
    题目描述注意,需要求的是岛屿的数量,而不是岛屿的总面积,这道题很考验对dfs思路的理解,而不是简单地套用模版。可以用dfs和bfs两种方法做。深度优先搜索版本首先看代码:classSolution{private:intdir[4][2]={0,1,1,0,-1,0,0,-1};//四个方向voiddfs(ve......