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实现)


目录
相关文章
|
8天前
|
Go
golang力扣leetcode 438.找到字符串中所有字母异位词
golang力扣leetcode 438.找到字符串中所有字母异位词
24 0
|
8天前
|
Go
golang力扣leetcode 17.电话号码的字母组合
golang力扣leetcode 17.电话号码的字母组合
26 0
|
8天前
|
Go
golang力扣leetcode 137.只出现一次的数字II
golang力扣leetcode 137.只出现一次的数字II
21 0
|
8天前
|
Go
golang力扣leetcode 301.删除无效的括号
golang力扣leetcode 301.删除无效的括号
36 0
|
8天前
|
Go
golang力扣leetcode 32.最长有效括号
golang力扣leetcode 32.最长有效括号
25 0
|
8天前
|
Go Windows
golang力扣leetcode 388.文件的最长绝对路径
golang力扣leetcode 388.文件的最长绝对路径
21 0
|
8天前
|
Go
golang力扣leetcode 136.只出现一次的数字I
golang力扣leetcode 136.只出现一次的数字I
12 0
|
8天前
|
Go
golang力扣leetcode 260.只出现一次的数字III
golang力扣leetcode 260.只出现一次的数字III
23 0
|
11月前
|
Python
Python|力扣猜数字
Python|力扣猜数字
37 0
|
Go 索引
每日一题---438. 找到字符串中所有字母异位词[力扣][Go]
每日一题---438. 找到字符串中所有字母异位词[力扣][Go]
每日一题---438. 找到字符串中所有字母异位词[力扣][Go]