268. Missing Number

来源:互联网 发布:python 转换为字典 编辑:程序博客网 时间:2024/05/20 06:07

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?

题意:给出数组nums,nums的长度是n,里边放的是0-n之间的不同的值,找出丢失的值。

思路:把数组所有值加一块儿sum,用0-n的总和值减去sum就是缺失的值。

class Solution {public:int missingNumber(vector<int>& nums) {const int size = nums.size();int sum = 0;for (int i = 0; i < nums.size(); i++){sum += nums[i];}int expectSum = size*(size + 1) / 2;return expectSum - sum;}};
思路2:大神的思路是,假设0-5之间的缺失值是4,则0^1^2^3^4^5^0^1^2^3^4^5=4.利用了0^n=n, n^n=0的性质。

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





0 0
原创粉丝点击