题目的链接在这里:https://leetcode-cn.com/problems/single-number-iii/
题目大意
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
一、示意图
二、解题思路
//直接判断存不存在 如果存在就删了list里的
LIst来解决
代码如下:
class Solution {
//有两个元素只出现一次 其余元素均出现两次
public int[] singleNumber(int[] nums) {
//只能参考一个 时间复杂度不是O(1)的
int result[]=new int[2];
List<Integer> list=new ArrayList<>();
for(int n:nums){
//直接判断存不存在 如果存在就删了list里的
if(list.contains(n)){
//这个remove要区别是 index还是具体的值
list.remove((Object)n);
}else{
list.add(n);
}
}
//然后把生成的结果 放到新数组中
for(int i=0;i<2;i++){
result[i]=list.get(i);
}
return result;
}
}