LeetCode-136. 只出现一次的数字(Goland实现)

简介: LeetCode-136. 只出现一次的数字(Goland实现)

题号:136. 只出现一次的数字


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

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

示例 1:


输入: [2,2,1]
输出: 1
复制代码


示例 2:


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


解题思路:

1、map法:遍历数组存map,遇相同元素则从map中删除,最后map输入即为解题答案

2、异或法:异或运算 相同数字异或为0 【如下:debug演示】


//map法
func singleNumber(nums []int) int {
  var m = make(map[int]int)
  for i := 0; i < len(nums); i++ {
    _, ok := m[nums[i]]
    if ok {
      //删除重复元素
      //delete(m, nums[i])
    } else {
      //存map 
      m[nums[i]] = i
    }
  }
  for k := range m {
    return k
  }
  return -1
}


//异或运算  相同数字异或为0
func singleNumber(nums []int) int {
  res := 0
  for _, i := range nums {
    res = res ^ i
  }
  return res
}


如下演示:


网络异常,图片无法展示
|



往期回顾:


【1】LeetCode-122. 买卖股票的最佳时机 II(Goland实现)  

【2】LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)  

【3】LeetCode-58. 最后一个单词的长度(Goland实现)


目录
相关文章
|
算法
LeetCode-122. 买卖股票的最佳时机 II(Goland实现)
LeetCode-122. 买卖股票的最佳时机 II(Goland实现)
188 0
LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)
LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)
218 0
|
存储
LeetCode-66. 加一(Goland实现)
LeetCode-66. 加一(Goland实现)
95 0
LeetCode-53. 最大子序和(Goland实现)
LeetCode-53. 最大子序和(Goland实现)
113 0
LeetCode-409. 最长回文串(Goland实现)
LeetCode-409. 最长回文串(Goland实现)
112 0
LeetCode-58. 最后一个单词的长度(Goland实现)
LeetCode-58. 最后一个单词的长度(Goland实现)
100 0
LeetCode-38. 外观数列(Goland实现)
LeetCode-38. 外观数列(Goland实现)
103 0
LeetCode-88. 合并两个有序数组(Goland实现)
LeetCode-88. 合并两个有序数组(Goland实现)
106 0
LeetCode-459. 重复的子字符串(Goland实现)
LeetCode-459. 重复的子字符串(Goland实现)
112 0
|
机器学习/深度学习
LeetCode-104. 二叉树的最大深度(Goland实现)
LeetCode-104. 二叉树的最大深度(Goland实现)
102 0