算法

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

说明:

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

示例 1:

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

func singleNumber(nums []int) int {
    result := 0
    for i := 0; i < len(nums); i ++ {
        result = result^nums[i]
    }
    return result
}
// 知识点一(声明):
// 1. 声明再初始化式:var m map[string]string,map的声明的时候默认值是nil ,此时进行取值,返回的是对应类型的零值,后需要使用m=make(map[string]string)进行初始化
// 2. make创建式:m := make(map[string]int)
// 3. 字面量声明式: m := map[string]int{“age”:18,“sex”:0,}
//
// 知识点二(增删改查)
// m["name"] = "云计算小哥"、
删除,如果key不存在则什么也不做delete(m, "name")、查询,key不存在返回value类型的零值v := m["name"]、m["name"] = "云计算数据库小哥"
//v, ok := m["name"] || _, ok := m["name"]
func singleNumber(nums []int) int {
    m := make(map[int]int)  
    for i := 0; i < len(nums); i ++ {
        if (m[nums[i]] == 0) {
            m[nums[i]] = 1
        } else {
            m[nums[i]] = 0
        }
    }
    for i := 0; i < len(nums); i ++ {
        if (m[nums[i]] == 1) {
            return nums[i]
        }
    }
    return 0
}

知识点:

原文地址:https://www.cnblogs.com/cjjjj/p/12448271.html