题目描述:136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
思路描述:
思路1:
利用按位异或的运算法则,在二进制下相同取0,不同取1.
故相同的两数异或后值为0;
public int singleNumber(int[] nums) {
int ans=0;
for(int i=0;i<nums.length;i++){
ans=ans^nums[i];
}
return ans;
}
}
思路2:
利用哈希表,键存取数组中的数字,值存储该键中数字出现的次数,存储完成之后,拿出值为1的键返回。
思路3:
1.对数组进行排序,排序后,相同元素便挨在一起。
2.遍历数组,找出当前元素与下一个元素不相同的元素返回,若相同,i++(由于循环条件中已有i+1,故这里只需加一),
3.若i为最后一个元素的索引,说明前面没有出现单独的数字,当前元素只出现一次,直接返回该元素
https://leetcode-cn.com/problems/single-number/