Leetcode:136. 只出现一次的数字

Leetcode:136. 只出现一次的数字

题目描述

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

说明:

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

示例 1:

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

示例 2:

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

思路

思路1

直接对所有数字异或,相同的两个数字会直接运算为零

代码

代码1

class Solution {
    public int singleNumber(int[] nums) {
        if (nums == null || nums.length == 0){
            return 0;
        }
        int result = 0;
        for(int num:nums){
            result = result ^ num;
        }
        return result;
    }
}

复杂度分析

思路1时间复杂度

$O(n)$

思路1空间复杂度

$O(1)$


文章作者: 小风雷
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小风雷 !
评论
 上一篇
Leetcode:191. 位1的个数 Leetcode:191. 位1的个数
Leetcode:191. 位1的个数题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 示例 1:输入:00000000000000000000000000001011 输出:
2020-05-01
下一篇 
Leetcode:210. 课程表 II Leetcode:210. 课程表 II
Leetcode:210. 课程表 II题目描述现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课
2020-04-30
  目录