【LeetCode-442】Find All Duplicates in an Array(C++)(
来源:互联网 发布:openstack的网络配置 编辑:程序博客网 时间:2024/06/04 19:34
题目要求:给出一个整型数组nums,长度为n,则数组中的元素在1~n之间,有些元素出现了两次,有些元素出现了1次,找出那些出现了两次的数。
问题解答:
1. 时间复杂度为O(n),空间复杂度为O(n)的解法。利用一个长度为n的数组temp,初始化为0,遍历数组nums[i],判断temp[nums[i]-1]是否为0,如果是,则说明nums[i]第一次出现,将temp[nums[i]-1]置为1。如果temp[nums[i]-1]的值已经为1了,则说明nums[i]已经是第二次出现了,将nums[i]放到result数组里面去。当然也可以用set或者map来实现,不过set和map还存在查找元素的过程,花费的时间要长一点。
class Solution {public: vector<int> findDuplicates(vector<int>& nums) { int l=nums.size(); vector<int> temp(l,0); vector<int> result; for(int i=0;i<l;i++){ if(temp[nums[i]-1]==1) result.push_back(nums[i]); else temp[nums[i]-1]=1; } return result; }};
2.时间复杂度为O(n),空间复杂度为O(1)的解法。具体思路与448题一致,即将相应位置上的数取相反数。
class Solution {public: vector<int> findDuplicates(vector<int>& nums) { int l=nums.size(); vector<int> result; for(int i=0;i<l;i++){ int value=abs(nums[i])-1; if(nums[value]>0) nums[value]=-nums[value]; else result.push_back(abs(nums[i])); } return result; }};
0 0
- [C语言][LeetCode][442]Find All Duplicates in an Array
- 【LeetCode-442】Find All Duplicates in an Array(C++)(
- Leetcode 442 - Find All Duplicates in an Array (array)
- [LeetCode]Find All Duplicates in an Array
- LeetCode Find All Duplicates in an Array
- Leetcode Find All Duplicates in an Array
- [Leetcode] Find All Duplicates in an Array
- leetCode-Find All Duplicates in an Array
- leetcode 442 Find All Duplicates in an Array C++
- [LeetCode]442 Find All Duplicates in an Array
- LeetCode 442 --- Find All Duplicates in an Array
- [leetcode 442] Find All Duplicates in an Array
- LeetCode 442 Find All Duplicates in an Array
- Find All Duplicates in an Array,leetcode,442
- LeetCode.442 Find All Duplicates in an Array
- Leetcode 442-Find All Duplicates in an Array
- 【442】Find All Duplicates in an Array
- LeetCode-Find All Duplicates in an Array & Find All Numbers Disappeared in an Array
- sturts2标签判断多个条件
- Centos 6/7 x86_64 系统开启TCP-BBR拥塞控制一键安装脚本
- 知道这20个正则表达式,能让你少写1,000行代码
- Difference between printf, print, and sprintf in Perl?
- PS 开启GPU加速图片处理
- 【LeetCode-442】Find All Duplicates in an Array(C++)(
- Windows服务程序的调试
- 欢迎使用CSDN-markdown编辑器
- List ArrayList LinkedList 初探
- java实现导出Excel(跨行,跨列)
- AngularJS 核心特性
- 整点刷新
- Gradle常用配置
- 第十一章:持有对象(下)