题目链接:https://leetcode.com/problems/find-all-duplicates-in-an-array/description/
Python解法
# coding: utf-8
# ### final-best
# In[5]:
# 方法一
# best
class Solution(object):
def findDuplicates(self, nums):
dicts = {}
res = []
for i in nums:
if i not in dicts:
dicts[i]=1
else:
#dicts[i]+=1
res.append(i)
return res
nums = [4,3,2,7,8,2,3,1]
a = Solution()
a.findDuplicates(nums)
# 方法二
class Solution(object):
def findDuplicates(self, nums):
a = {}
for i in nums:
if nums.count(i)>1:
a[i] = nums.count(i)
return a.keys()
nums = [4,3,2,7,8,2,3,1]
# nums=[]
a = Solution()
a.findDuplicates(nums)
# 备注:方法二中因为有count函数,时间超时
# 方法三
class Solution(object):
def findDuplicates(self, nums):
dicts = {}
for i in nums:
if i not in dicts:
dicts[i]=1
else:
dicts[i]+=1
res = []
for k,v in dicts.items():
if v>1:
res.append(k)
return res
nums = [4,3,2,7,8,2,3,1]
# nums=[]
a = Solution()
a.findDuplicates(nums)
# 备注:方法三可以被接收,但是执行速度没有方法一快
# 方法四
class Solution(object):
def findDuplicates(self, nums):
from collections import Counter
dicts1 =Counter(nums)
res = []
for k,v in dicts1.items():
if v>1:
res.append(k)
print res
nums = [4,3,2,7,8,2,3,1]
a = Solution()
a.findDuplicates(nums)
java解法:
package test;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.HashMap;
public class Leetcode_442 {
public List<Integer> findDuplicates(int[] nums){
List<Integer> list = new ArrayList<Integer>();
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
if(!map.containsKey(nums[i])){
map.put(nums[i], 1);
}else {
list.add(nums[i]);
}
}
return list;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {1,2,2,3,4,5,3};
Leetcode_442 l = new Leetcode_442();
List<Integer> list = new ArrayList<Integer>();
list = l.findDuplicates(nums);
System.out.println(list.toString());
}
}