问题
在给定的整数数组中查找第一个非重复元素。
输入:-1 2-1 3 2输出:3
输入:9 4 9 6 7 4输出:6
思路
1.两个循环:
第一个循环不断从数组中取出元素A
第二个循环比较和A坐标不同的元素,遍历数组后如果发现到了数组末尾还找不到相同的,就可以输出
2.使用哈希表
两个遍历
第一个遍历,将数组元素加入哈希表作为key,value默认为1,检测到相同的,将value+1
第二个遍历,遍历哈希表,取出value为1的key
如果使用return关键字,可以直接退出方法,当然也就直接退出循环,可以省掉break关键字
/**
* @ClassName FindDiffrent
* Description 在给定的整数数组中查找第一个非重复元素。
**/
public class FindDiffrent {
public int GetDiff(int[] array){
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (i!=j&&array[i]==array[j]) {
break;
}
if (j==array.length-1) {
return array[i];
}
}
}
return -404;
}
public int UseMap(int[] array) {
HashMap<Integer, Integer> integerHashMap = new HashMap<>();
for (int i = 0; i < array.length; i++) {
if (integerHashMap.containsKey(array[i])) {
integerHashMap.put(array[i], integerHashMap.get(array[i]) + 1);
}
else{
integerHashMap.put(array[i], 1);
}
}
Set<Integer> integers = integerHashMap.keySet();
for (Integer integer : integers) {
if (integerHashMap.get(integer) == 1) {
return integer;
}
}
return -404;
}
public static void main(String[] args) {
int[] array={9 ,4 ,9 ,6 ,7 ,4};
FindDiffrent findDiffrent = new FindDiffrent();
// System.out.println(findDiffrent.GetDiff(array));
System.out.println(findDiffrent.UseMap(array));
}