Single Number I
Given a non-empty array of integers, every element appears twice except for one. Find that single one.
给定一个数组,其中所有的元素均出现两次除了其中的某一个,请找出那个只出现一次的元素。
思路:将所有的元素挨个放入列表中,如果该元素在列表中已经存在了,那么就删除列表中的元素,最终列表中就会只剩下一个单独的元素了。
public static int singleNumber(int[] nums) {
ArrayList<Integer> arrlist = new ArrayList<Integer>();
for (int i = 0; i < nums.length; i++) {
if(arrlist.contains(nums[i])){
Integer b = nums[i];
arrlist.remove(b);
}
else {
arrlist.add(nums[i]);
}
}
int result = arrlist.get(0);
return result;
}
Single Number II
Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.
给定一个数组,其中所有的元素均出现三次除了其中的某一个,请找出那个只出现一次的元素。
思路:利用两个列表,第一次出现就放入列表1中,第二次出现就放入列表2中,第三次出现就删除列表1中的元素,那么列表1中最后剩下的就是单独的元素。
ArrayList<Integer> arrlist1 = new ArrayList<Integer>();
ArrayList<Integer> arrlist2 = new ArrayList<Integer>();
for (int i = 0; i < nums.length; i++) {
if(!arrlist1.contains(nums[i])){
arrlist1.add(nums[i]);
}else if(!arrlist2.contains(nums[i])){
arrlist2.add(nums[i]);
}else if(arrlist1.contains(nums[i]) && arrlist2.contains(nums[i])){
Integer a = nums[i];
arrlist1.remove(a);
}
}
int result = arrlist1.get(0);
return result;
}
Single Number III
Given an array of numbers nums
, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.
给定一个数组,其中所有的元素均出现两次除了其中的某两个,请找出那个只出现一次的元素。
思路同题1
public static int singleNumber(int[] nums) {
ArrayList<Integer> arrlist1 = new ArrayList<Integer>();
ArrayList<Integer> arrlist2 = new ArrayList<Integer>();
for (int i = 0; i < nums.length; i++) {
if(!arrlist1.contains(nums[i])){
arrlist1.add(nums[i]);
}else if(!arrlist2.contains(nums[i])){
arrlist2.add(nums[i]);
}else if(arrlist1.contains(nums[i]) && arrlist2.contains(nums[i])){
Integer a = nums[i];
arrlist1.remove(a);
}
}
int result = arrlist1.get(0);
return result;
}