(leetcode)面试题 17.04. 消失的数字(单身狗变体)

简介: (leetcode)面试题 17.04. 消失的数字(单身狗变体)


方法1:暴力解法

直接用for循环从0~N遍历,若不存在返回对应数字即可。

时间复杂度O(N^2)。

空间复杂度O(1)。

int missingNumber(int* nums, int numsSize) {
  // i 是要找的数字 ,j是遍历数组的下标
    int i = 0;
  for (i = 0; i < numsSize; i++)
  {
        int j = 0;
    for (j = 0; j < numsSize; j++)
    {
      //数组中存在 数字i,跳出循环,否则return i
      if (i == nums[j])
      {
        break;
      }
    }
    //遍历到最后,说明没找到
        if(j==numsSize)
        {
        return i;
        }
  }
  //只有一个元素0时,返回1
    return i;
}

方法2:哈希

利用hash数组记录出现的数字,如果出现过对应hash为1.

再次遍历hash数组,数组值为0,就是未出现的元素。

时间复杂度O(n)

空间复杂度O(n)

int missingNumber(int* nums, int numsSize) {
  //申请一个大小为(numsSize+1)的数组,注意要多申请一个!
  int * hash =(int *)malloc(sizeof(int)*(numsSize+1));
    //申请完别忘记初始化
    memset(hash,0,sizeof(int)*(numsSize+1));
  int i = 0;
  for (i = 0; i < numsSize; i++)
  {
    //用hash记录nums中元素是否出现过
    hash[nums[i]] = 1;
  }
  for (i = 0; i < numsSize; i++)
  {
    if (hash[i] == 0)
    {
      return i;
    }
  }
  return i;
}

方法3:异或

先将数组中所有元素异或,然后再与0~n异或,最后得到的数字即为所求数字。(此方法需要明白异或的性质:相同异或为0,相异异或为1)

时间复杂度O(n)

空间复杂度O(1)

int missingNumber(int* nums, int numsSize) {
  int ret = 0;
  //先与数组中的元素异或
  for (int i = 0; i < numsSize; i++)
  {
    ret ^= nums[i];
  }
  //再与0~N的元素异或
  for (int i = 0; i < numsSize+1; i++)
  {
    ret ^= i;
  }
  return ret;
}

以上是本人对此题的见解,如果大佬们有什么意见,欢迎在评论区里讨论💞

目录
相关文章
|
4月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
4月前
|
存储 算法 索引
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
|
4月前
|
存储 算法
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
|
5月前
|
SQL 算法 大数据
深入解析力扣176题:第二高的薪水(子查询与LIMIT详解及模拟面试问答)
深入解析力扣176题:第二高的薪水(子查询与LIMIT详解及模拟面试问答)
|
5月前
|
算法 数据挖掘 大数据
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
|
5月前
|
SQL 算法 大数据
深入解析力扣181题:超过经理收入的员工(自连接方法详解及模拟面试问答)
深入解析力扣181题:超过经理收入的员工(自连接方法详解及模拟面试问答)
|
5月前
|
存储 算法 搜索推荐
深入解析力扣179题:最大数(自定义排序法详解及模拟面试问答)
深入解析力扣179题:最大数(自定义排序法详解及模拟面试问答)
|
5月前
|
SQL 大数据 数据挖掘
深入解析力扣178题:分数排名(DENSE_RANK详解及模拟面试问答)
深入解析力扣178题:分数排名(DENSE_RANK详解及模拟面试问答)
|
5月前
|
存储 算法 数据挖掘
力扣174题动态规划:地下城游戏(含模拟面试)
力扣174题动态规划:地下城游戏(含模拟面试)
|
5月前
|
存储 算法 数据挖掘
力扣173题:二叉搜索树迭代器(含模拟面试)
力扣173题:二叉搜索树迭代器(含模拟面试)