只出现一次的数字 III-中等

难度:中等

题目描述:
给定一个整数数组  nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

示例:

输入: [1, 2, 1, 3, 2, 5];
输出: [3, 5];
1
2


解题思路:
对数组进行排序
遍历数组进行异或运算,若前后不相等则存入新数组,并前进一位
若相等则前进两位
注意元素为零时的特殊情况

var singleNumber = function (data) {
  let nums = data.sort((a, b) => {
    return a - b;
  });
  let arr = [];
  for (let i = 0; i < nums.length; ) {
    if (
      (nums[i] ^ nums[i + 1]) != 0 ||
      (nums[i] !== nums[i + 1] && nums[1] === 0)
    ) {
      arr.push(nums[i]);
      i += 1;
    } else {
      i += 2;
    }
  }
  return arr;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
最后更新时间: 4/29/2020, 8:20:39 PM