leetcode 448 Find All Numbers Disappeared in an Array
2017-01-25 02:49
399 查看
Problem:
给一个数组,数组中包含大小为1~n(数组的大小)的数,问有哪一个数没有包含到当中?
Solution:
先把所有的数放在应该有的位置上,然后再遍历一次看谁的位置上不是它应有的数。
给一个数组,数组中包含大小为1~n(数组的大小)的数,问有哪一个数没有包含到当中?
Solution:
先把所有的数放在应该有的位置上,然后再遍历一次看谁的位置上不是它应有的数。
//Solution1: //将负数当做一个标志位,这样可以只遍历两次,不需要一条龙式的遍历。 class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { vector<int> ret; for(int i = 0; i < nums.size(); i++) { int val = abs(nums[i]) - 1; if(nums[val] > 0) { nums[val] = -nums[val]; } } for(int i = 0; i < nums.size(); i++) { if(nums[i] > 0) { ret.push_back(i+1); } } return ret; } }; //Solution2: //将大于n当做标志位,计算每一位时通过取余恢复 class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { vector<int> ret; int n = nums.size(); for (int i = 0; i < nums.size(); i++) nums[(nums[i]-1) % n] += n; for (int i = 0; i < nums.size(); i++) if(nums[i] <= n) ret.push_back(i+1); return ret; } }; //Solution3: //通过观察每一位是否是原来的值当做标志位 class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { vector<int> l; int tmp = -1; for(int i = 0; i < nums.size(); i++) { while(nums[i] != i+1) { if(nums[i] == tmp) { tmp = -1; break; } else { tmp = nums[i]; nums[i] = nums[nums[i]-1]; nums[tmp-1] = tmp; } } } for(int i = 0; i < nums.size(); i++) { if(nums[i] != i+1) l.push_back(i+1); } return l; } };
相关文章推荐
- LeetCode 448 Find All Numbers Disappeared in an Array
- leetcode(448). Find All Numbers Disappeared in an Array
- leetcode ---448---FindAllNumbersDisappearedinanArray
- 【LeetCode-448】 Find All Numbers Disappeared in an Array(C++)
- Leetcode 448 Find All Numbers Disappeared in an Array
- 【Leetcode-easy-448】Find All Numbers Disappeared in an Array
- [leetcode 448]Find All Numbers Disappeared in an Array
- leetcode448~Find All Numbers Disappeared in an Array
- leetcode_448 Find All Numbers Disappeared in an Array
- leetcode-448- Find All Numbers Disappeared in an Array
- Leetcode 448 Find All Numbers Disappeared in an Array
- leetcode 448 Find All Numbers Disappeared in an Array C++
- LeetCode - 448 - Find All Numbers Disappeared in an Array
- Leetcode 448 Find All Numbers Disappeared in an Array
- LeetCode448 Find All Numbers Disappeared in an Array(java/python)
- leetcode-448 Find All Numbers Disappeared in an Array
- LeetCode 448 Find All Numbers Disappeared in an Array
- [LeetCode]448 Find All Numbers Disappeared in an Array
- leetcode-448-Find All Numbers Disappeared in an Array
- leetcode448 Find All Numbers Disappeared In An Array Java