Leetcode 268. Missing Number

来源:互联网 发布:中山大学网络缴费 编辑:程序博客网 时间:2024/06/08 14:22

Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.

For example,
Given nums = [0, 1, 3] return 2.

Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

如果用等差数列求和公式解,这是一道很简单的题。但是搜了下牛人用按位异或解这道题,使这道题变得有意思。用的技巧在于两个相同的数按位异或结果为0

class Solution {public:    int missingNumber(vector<int>& nums) {        int n=nums.size();        int True=n*(n+1)/2;        int res=0;        for(int i:nums)            res+=i;        return True-res;    }};
class Solution {public:    int missingNumber(vector<int>& nums) {        int result = nums.size();        int i=0;        for(int num:nums){            result ^= num;            result ^= i;            i++;        }        return result;    }};
0 0
原创粉丝点击