[leetcode] 268. Missing Number 解题报告

来源:互联网 发布:韩国电视直播软件apk 编辑:程序博客网 时间:2024/06/07 18:33

题目链接:https://leetcode.com/problems/missing-number/

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?


思路:用一个前n项和公式减去数组的和即可得出答案

代码如下:

class Solution {public:    int missingNumber(vector<int>& nums) {        int len = nums.size(), sum = len*(len+1)/2;        for(auto val: nums) sum -= val;        return sum;    } };


另外还有一种位运算的方法,利用异或操作,全部异或完数字0-n和nums[0, len-1]之后剩余的数字就是我们要求的结果。也是一个很漂亮的解法

代码如下:

class Solution {public:    int missingNumber(vector<int>& nums) {        int result = 0, len = nums.size();        for(int i = 0; i< len; i++)            result ^= (i ^ nums[i]);        return result ^ len;    }};

第二种方法参考:http://www.neozone.me/leetcode268.html

0 0
原创粉丝点击