LeetCode题解:136. 只出现一次的数字,排序后搜索,JavaScript,详细注释

49 阅读1分钟

原题链接: leetcode.cn/problems/si…

解题思路:

  1. 将数组排序,除了只出现一次的数字,其他都是以2个一组的形式出现。
  2. 遍历数组,每次索引i指向的都是2个数字中的第1个。
  3. 如果nums[i]nums[i + 1]不相等,那么nums[i]只出现了一次。
  4. 如果nums[i]nums[i + 1]相等,那么查找下一组数字,即i = i + 2
/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function (nums) {
  // 将数组排序
  nums.sort((a, b) => a - b)

  // 遍历nums,查找只出现1次的值
  // 如果相邻两个数字相同,那么nums[i]肯定出现了2次,下次从i+2位置开始搜索
  for (let i = 0; i < nums.length; i += 2) {
    // 如果遇到相邻两个数字不相等,nums[i]肯定只出现过一次
    if (nums[i] !== nums[i + 1]) {
      return nums[i]
    }
  }
}