剑指offer_【40】数组中只出现一次的数字

1.题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

2.解题思路

将数组依次放到list里面,如果list里面含有准备要进去的数值,则remove掉,剩下的两个数组即为该数组中只出现过一次的数字

list.remove要用(Object object)方法而不是list.remove(int index);

3.代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
import java.util.*;
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array.length<2){
return ;
}
ArrayList<Integer> res = new ArrayList();
for(int i = 0;i<array.length;i++){
if(res.contains(array[i])){
//这里remove掉的是里面的数array[i],而不是array[i]索引对应的数

res.remove(Integer.valueOf(array[i]));

}else{
res.add(array[i]);
}
}
num1[0] = res.get(0);
num2[0] = res.get(1);
}
}
文章目录
  1. 1. 1.题目描述
  2. 2. 2.解题思路
  3. 3. 3.代码
| 139.6k