美文网首页LeetCode
268. 缺失数字

268. 缺失数字

作者: 1江春水 | 来源:发表于2019-07-16 17:42 被阅读3次

    【题目描述】
    给定一个包含 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

    相关文章

      网友评论

        本文标题:268. 缺失数字

        本文链接:https://www.haomeiwen.com/subject/xlntlctx.html