iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
自我挑戰組

JavaScript - 30天 - 自學挑戰系列 第 24

LeetCode Js-136. Single Number

  • 分享至 

  • xImage
  •  

LeetCode Js-136. Single Number

Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.
You must implement a solution with a linear runtime complexity and use only constant extra space.

給予一個非空白的整數陣列 nums,每一個元素皆出現兩次只有一個沒有。
尋找出現一次的元素。
你必須實現具有線性運行複雜度的解決方案,不能使用額外的空間。

Example 1:

<pre style='background-color:#ggg'>
Input: nums = [2,2,1]
Output: 1

Solution:

  1. 如果 nums 中只有一個數值,則返回該數值。
  2. 宣告一個 box 物件 {}。
  3. 將 nums 中的數值與次數依序放入 box 物件中。
  4. 依序尋找物件中數值的次數為 1,回傳該數值。

Code1: two for loop

var singleNumber = function(nums) {
  if (nums.length ===1) return nums[0]

  let box = {}

  for (let i = 0; i < nums.length; i++) {
    if (box[nums[i]]) {
      box[nums[i]]++
    } else {
      box[nums[i]] = 1
    }
  }

  for (let i in box) {
    if (box[i] === 1) {
      return i
    }
  }  
};

Code2: XOR

var singleNumber = function(nums) {
  for (let i = 1; i < nums.length; i++) {
    nums[0] ^= nums[i]
  }
  return nums[0]
};

FlowChart:
Example 1

Input: nums = [2,2,1]
nums.length = 3
box = {}

step.1
box = {'2': 1}
box = {'2': 2}
box = {'1': 1, '2': 1}

step.2 
box = {'1': 1} = 1, return i //1

上一篇
LeetCode Js-258. Add Digits
下一篇
LeetCode Js-205. Isomorphic Strings
系列文
JavaScript - 30天 - 自學挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言