[Leetcode] #268 Missing Number

来源:互联网 发布:阿里云 网站备案 编辑:程序博客网 时间:2024/06/05 02:35

Discription

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.

Solution

1.求和再减,注意溢出

2.异或

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

3.二分

int missingNumber(vector<int>& nums) {int n = nums.size();sort(nums.begin(), nums.end());int left = 0, right = n, mid = 0;while (left<right){mid = (left + right) >> 1;if (nums[mid]>mid)right = mid;elseleft = mid + 1;}return left;}

4.交换,用索引标注

int missingNumber(vector<int>& nums) {int n = nums.size();for (int i = 0; i<n; i++){while (nums[i]>0 && nums[i] <= n && nums[i] != i + 1)swap(nums[nums[i] - 1], nums[i]);}for (int i = 0; i<n; i++)if (nums[i] != i + 1) return i + 1;return 0;}


原创粉丝点击