算法笔记

136.只出现一次的数字

2020-03-18  本文已影响0人  haisongzhang

Single Number

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

只出现一次.png

题目分析

第一反应是想使用hashmap 等方式来进行求解,遍历map统计出现的次数,最后找出val为1的数即可。但是另一种更高级的做法是使用位运算来解决。
对于任意两个数a和b,我们对其使用 “异或”操作,应该有以下性质:

举个例子 5 ^ 4 ^ 5

算法_只出现一次.png

show code:

//go
func singleNumber(nums []int) int {
    ans := 0
    for _, num := range(nums) {
        ans ^= num
    }
    return ans
}
 //cpp
 class Solution {
 public:
     int singleNumber(vector<int>& nums) {
         int ans = 0;
         for (int num : nums) {
             ans ^= num;
         }
         return ans;
    }
};
 //JAVA
 class Solution {
     public int singleNumber(int[] nums) {
         int ans = nums[0];
         for (int i = 1; i < nums.length; i++) {
             ans = ans ^ nums[i];
         }
         return ans;
     }
}
 //python
class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        ans = 0
        for i in range(len(nums)):
            ans ^= nums[i]
        return ans
上一篇 下一篇

猜你喜欢

热点阅读