文章目录

  • 题目:
  • 例子:
  • 思路:
  • 举例说说思路:
  • 代码:
  • 复杂度:

题目:

  • 给定一个包含 0, 1, 2, …, n 中 n 个数的序列,
  • 找出 0 … n 中没有出现在序列中的那个数。

例子:

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

思路:

  • 采用位运算
  • 异或运算(XOR):相同的数异或后是0,不同的数异或后是1
  • 异或运算满足交换律

举例说说思路:


可以看出,上面的数组缺失的元素是2;数组长度是3;
我们这样做: 数组的元素和其对应的下标进行异或,最后再异或数组的长度:

即就是:(3^0) ^(0 ^1) ^(1 ^2) ^3 = (3 ^ 3) ^(0 ^0) ^(1 ^1) ^2 = 0 ^ 0 ^ 0 ^ 2 = 2

代码:

class Solution:def missingNumber(self,nums):missing = len(nums)          # missing是数组的长度for i, num in enumerate(nums):     # 循环遍历,得到数组的index和valuemissing ^= i ^ num        # 数组元素和其对应下标进行异或,再和数组长度异或return missing                # 返回缺失值# 验证
solution = Solution()
nums = [3,0,1]
print(solution.missingNumber(nums))
# 输出:
[2]

复杂度:

时间复杂度: O(n)
空间复杂度: O(1)

268、缺失数字(python)相关推荐

  1. Leetcode 268. 缺失数字 解题思路及C++实现

    方法一:利用求和公式 1+2+...+n = n*(n+1)/2 解题思路: 利用求和公式 1+2+...+n = n*(n+1)/2,首先求出nums的size,就知道这n个数的和了,然后遍历数组n ...

  2. LeetCode 268 缺失数字

    原题链接 标签: 数组  排序 解题思路: 1.     先进行排序 2.     0--N之间只有一个数没有出现,并且这是数组缺失的数字等于所在数组下标 3.      利用双指针,找到相差1的两个 ...

  3. 268. 缺失数字 golang

    Me 首项加末项乘以项数/2.就是总和.然后剪掉nums里面的数组和 func missingNumber(nums []int) int {var sum intlens := len(nums)f ...

  4. 【Leetcode | 11】268. 缺失数字

    给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2 ...

  5. LeetCode 268. 缺失数字

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个包含 0, 1, 2, -, n 中 n 个数的序列,找出 0 - n 中没有出现在序列中的那个数. 示例 1:输入: [3,0,1] 输 ...

  6. LeetCode每日一题: 缺失数字(No.268)

    题目:缺失数字 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 复制代码 示例: 输入: [3,0,1] 输出: 2输入: [9,6 ...

  7. 牛客题霸 [ 缺失数字] C++题解/答案

    牛客题霸 [ 缺失数字] C++题解/答案 题目描述 从0,1,2,-,n这n+1个数中选择n个数,找出这n个数中缺失的那个数,要求O(n)尽可能小. 题解: 我们可以用map来标记已出现过的数字 因 ...

  8. java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...

    java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...

  9. 如何在Java中使用重复项查找整数数组中的K个缺失数字?

    自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说过或看到过此问题,但是面试官 ...

  10. python列表转换成数字_python 字母转成数字Python操作列表的常用方法总结

    下面列出列表常用的方法操作列表以及小例子: 1.  Append 在列表末尾添加元素,需在列表末尾添加元素,需要注意几个点: A. append中添加的参数是作为一个整体 >>> n ...

最新文章

  1. 【extjs6学习笔记】1.1 初始:创建项目
  2. 速查笔记(Linux Shell编程上)
  3. accept函数与TCP三次握手
  4. MySQL从入门到精通50讲(四)-MySQL表操作创建表及删除表
  5. arp欺骗攻击——获取内网中用户浏览的图片信息
  6. anaconda安装tensorflow gpu_安装Tensorflow-gpu的来龙去脉
  7. 10.1.3 标签分类与嵌套
  8. 解决ASP.Net第一次访问慢的处理 IIS 7.5
  9. “百变”Redis带你见识不同场景下的产品技术架构
  10. python求123逆序数_应用Python来计算排列中的逆序数个数
  11. 如何在React中使用功能组件
  12. 根据ip获取所在城市 php,PHP:根据IP地址获取所在城市
  13. Xamarin开发Android---提示、跳转、传递数值 (学习总结)
  14. 机器学习会成为2017年大数据​分析的瓦解者吗?
  15. 《数字图像处理(第三版)》 第一章 绪论 笔记
  16. 省市区三级联动插件(v-distpicker)
  17. simulink与gt联合仿真问题求解
  18. python 计算字符串表达式_python计算数学表达式
  19. 2021最新WordPress安装教程(一):Centos7安装Apache
  20. 解决eclips代码批量首行缩进 退格 调试

热门文章

  1. 投行巨头金融科技战略——摩根士丹利财富管理转型之路篇
  2. Julia : varinfo() 与工作空间,@isdefined, @which
  3. Juno: 字体缩放
  4. 【预测模型】基于matlab离散状态空间模型模拟预测控制仿真系统(单输入单输出)【含Matlab源码 1537期】
  5. 【优化算法】麻雀搜索优化算法(SSA)【含Matlab源码 1288期】
  6. 【人脸识别】基于matlab GUI Gabor+SVM比较PCA+SVM人脸识别【含Matlab源码 685期】
  7. 【雷达通信】基于matlab GUI雷达定位模拟【含Matlab源码 304期】
  8. mysql 对日期的处理函数_MySQL日期处理函数
  9. ai人工智能的本质和未来_人工智能简介:这就是未来
  10. 新时达as380服务器显示75,成为电梯高手之新时达AS380控制系统故障代码