leetcode 448 Find All Numbers Disappeared in an Array
来源:互联网 发布:大数据的4v特征 编辑:程序博客网 时间:2024/06/05 10:22
Problem:
给一个数组,数组中包含大小为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; }};
1 0
- leetcode 448Find All Numbers Disappeared in an Array (array)
- LeetCode No.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 C++
- 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
- 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
- [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
- LeetCode 448 Find All Numbers Disappeared in an Array
- 字符串的排列(字典序)
- 连号区间数(蓝桥杯)
- 结构体
- 51NOD1246 罐子和硬币
- HTML图片占位符
- leetcode 448 Find All Numbers Disappeared in an Array
- Android 笔记 - 从图像中扣一个洞出来 ……
- Spring属性配置细节
- 【Android】初学android开发——前言
- leetcode 136 Single Number
- ORA-01102: cannot mount database in EXCLUSIVE mode 处理方法
- iOS开发笔记——常用代码块
- 【LeetCode】 201. Bitwise AND of Numbers Range
- 如何在eclipse的配置文件里指定jdk路径(即配置启动eclipse的JDK)