【leetcode】Missing Number

来源:互联网 发布:财务战略矩阵案例 编辑:程序博客网 时间:2024/05/18 12:32

Difficulty:medium

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是未经排序的向量,这样导致如果是乱序无法找到

最终尝试:

class Solution {public:    int missingNumber(vector<int>& nums) {        int next=0;        int size=nums.size();for(int i=0;i<size;i++){next+=i-nums[i];}next=next+size;return next;    }};
之后考虑乱序的情况,在乱序的情况下,从1到n进行循环,因为所有的向量nums都是从0开始到n结束,并且缺失的数字只有一个,那么采用加和的方法,从0~n减去0~n-1对应的nums向量的值的总和即可得到最终的差值

next+=i-nums[i];
这行代码是为了简化循环的时间效率,采用一次循环,边加和边做差值就可以得到0~n-1的总和减去0~n-1对应的nums向量的值,最后再加上n就可以得到最终的结果

1 0
原创粉丝点击