前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >268. 缺失数字

268. 缺失数字

原创
作者头像
Michel_Rolle
修改2021-03-08 09:58:06
6160
修改2021-03-08 09:58:06
举报
文章被收录于专栏:LeetCode解题LeetCode解题

链接

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

示例 1:

代码语言:txt
复制
输入: [3,0,1]
输出: 2

示例2:

代码语言:txt
复制
输入: [9,6,4,2,3,5,7,0,1]
输出: 8

说明:

你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?

代码语言:txt
复制
func missingNumber(nums []int) int {
    	// 因为没有跳过的数,所以求出长度的和,然后减去每一项的值
	max := len(nums) * (len(nums) + 1) / 2

	for _, j := range nums {
		max -= j
	}
	return max
}

解法2

代码语言:txt
复制
解法2

func missingNumber(nums []int) int {
	xor := 0

	for i, n := range nums {
		xor ^= i ^ n
	}

	// 所有的 i 再加上 len(nums),就相当于 0,1,...,n。
	// 利用 相同的数异或为0,及其交换律
	// xor 最后的值,就是那个缺失的数

	return xor ^ len(nums)
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档