LeetCode 268. 缺失数字 Missing Number

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

【示例1】
输入: [3,0,1]
输出: 2

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

【Swift代码实现】
1、数学方法实现,(0-n的和) 减去 (给出数组元素之和)= 所求值

func missingNumber(_ nums: [Int]) -> Int {
    let sum = nums.count * (nums.count + 1) / 2
    var s = 0
    for num in nums {
        s+=num
    }
    return sum-s
}

2、异或运算

func missingNumber(_ nums: [Int]) -> Int {
    var result = nums.count
    for num in 0..<nums.count {
        result ^= nums[num]
        result ^= num
    }
    return result
}

异或运算有以下特性:
  0^0 = 0,
  1^0 = 1,
  0^1 = 1,
  1^1 = 0;
(1) 0 ^ 0=0,0^1=1 0异或任何数=任何数
(2) 1 ^ 0=1,1^1=0 1异或任何数-任何数取反
(3) 任何数异或自己=把自己置0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容