136. 只出现一次的数字(LeetCode题解)

142 阅读1分钟

1、题目:

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

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

2、实例:

实例1:

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

实例2:

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

3、题解:

 var singleNumber = function (nums) {
      let arr = nums.sort()//先进行一个排序
      let temp = 0;
      for (let i = 0; i < arr.length; i++) {
        if (i % 2 == 0) {
          temp += arr[i]
        } else {
          temp -= arr[i];
          if (temp != 0) {
            return nums[i - 1]
          }
        }
      }
      return nums[nums.length - 1]
    };