136.Single Number

来源:互联网 发布:淮安悠迅网络 编辑:程序博客网 时间:2024/06/10 03:41

136.Single Number

题目

给出一个整数数组,每个元素出现两次除了其中一个元素。找出单个元素。
注意:
你的算法应该有限行时间复杂度。你能不用额外存储空间来实现吗?

代码块

class Solution {    public static int singleNumber(int[] nums) {       int a = nums[0];        for(int i = 0; i < nums.length - 1; i++){           a ^= nums[i+1];       }       return a;    }    public static void main(String[] args) {        int[] nums = {1,1,2,2,3};        System.out.println(singleNumber(nums));    }}

代码分析

本题使用的是异或运算。
XOR:
a⊕0=a
a⊕a=0
a⊕b⊕a=(a⊕a)⊕b=0⊕b=b
时间复杂度:O(n)。因为只是循环访问一次nums数组。
空间复杂度:O(1)。
【一个算法的空间复杂度S(n)定义为该算法所耗费的存储空间。如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1)】

原创粉丝点击