LeetCode 268. Missing Number

来源:互联网 发布:农村金融网点数据 编辑:程序博客网 时间:2024/05/17 20:34

题目:
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,1,2,…,n,删掉了一个数字,找出删掉的数。
先将数组排个序,如果最后一个数比size大1,那么删掉的是最后一个数;如果第一个数是1,那么删掉的数是0;否则就利用size求原来数组的和(size*(size+1)/2),减去删掉数后的总和,就是删掉的数。

代码:

class Solution {public:    int missingNumber(vector<int>& nums) {        sort(nums.begin(),nums.end());//先将数组排个序        size_t size=nums.size();        if(nums[size-1]==size-1){//果最后一个数比size大1,那么删掉的是最后一个数            return size;        }        else if(nums[0]==1){//如果第一个数是1,那么删掉的数是0            return 0;        }        else{            int oldsum=size*(size+1)/2;//利用size求原来数组的和(size*(size+1)/2)            int newsum=0;            for(int i=0;i<size;++i){//删掉数后的总和                newsum+=nums[i];            }            return oldsum-newsum;//两个一减就是删掉的数        }    }};
0 0
原创粉丝点击