LeetCode 268. Missing Number
2017-04-06 16:47
411 查看
题目:
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),减去删掉数后的总和,就是删掉的数。
代码:
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;//两个一减就是删掉的数 } } };
相关文章推荐
- LeetCode 268. Missing Number
- Leetcode-268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- [leetcode] 268. Missing Number
- LeetCode: 268. Missing Number
- LeetCode 268. Missing Number
- leetcode268. Missing Number
- 【LeetCode】268. Missing Number
- LeetCode 268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- leetcode:268. Missing Number(Java)解答
- 【leetcode】268. Missing Number
- Leetcode 268. Missing Number (Medium) (cpp)
- Leetcode 268. Missing Number
- Leetcode-268. Missing Number
- LeetCode268. Missing Number
- [Leetcode] 268. Missing Number
- [LeetCode]268. Missing Number(求数组中缺失的元素)
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 【LeetCode】268. Missing Number