查看“缺失数字”的源代码
←
缺失数字
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 描述 == === leetcode === https://leetcode-cn.com/problems/missing-number/description/ === 问题 === <pre> 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 </pre> == 异或操作 == === 异或特性 === <source lang="shell" line start="1" highlight="3-4"> java 中 操作符: ^ a XOR a = 0 # 两个相同的数异或运算,结果为0 b XOR b XOR a = a # 3个数,其中两个相同的数做异或运算, 结果为那个不同的数 </source> === code === <source lang="java"> class Solution { /** * 由题可得数组[0, 1, ..., n] (异或操作无序性) * 所以该题等价于: 一个有序数组[0,1, 2, ... k, k + 1, ... n + 1], 去掉k,让你从中找出k * i == nums[i] ==> i ^ nums[i] = 0, !!! 这个是本解法的本质 * * 经过for遍历后, res = nums[k] ^ (n + 1) * 所以我们要找的nums[k] = k 的值为: for 遍历后的res ^ (n + 1) * * @param nums * @return */ public int missingNumber(int[] nums) { int res = 0, i; for (i = 0; i < nums.length; i++) { res = res ^ i ^ nums[i]; } return res ^ i; } } </source> [[category: 算法]] [[category: leetcode]] [[category: 数学]]
返回至
缺失数字
。
导航菜单
个人工具
创建账户
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息