只出现一次的数字

1.题目

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

示例 1:

1
2
输入: [2,2,1]
输出: 1

示例 2:

1
2
输入: [4,1,2,1,2]
输出: 4

2.分析

  • 我个人第一时间想到的是先排序再遍历看哪个是单出来的 (时间复杂度太高了)
  • 还有一种是使用hashmap计数然后判断
  • 官方给出的解法 使用异或 (数组中各数异或 最后只会得到不相同的一个)

3.代码

  • 解法1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public int singleNumber(int[] nums) {
int len = nums.length;
int ans=0;
if(len==1){
ans = nums[0];
}else{
Arrays.sort(nums);
boolean flag = false;
for (int i = 0; i < len-1; i+=2) {
return ans;

}
}
  • 解法二(略)

  • 解法三

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Solution {
    public int singleNumber(int[] nums) {
    int ans = nums[0];
    for (int i = 1; i < nums.length; i++) {
    ans = ans ^ nums[i];
    }
    return ans;

    }
    }