136.[LeetCode] Single Number

来源:互联网 发布:经典网络言情小说 编辑:程序博客网 时间:2024/05/16 13:57

要求是时间 O(n),
并且不能有额外的空间要求

如果可以使用额外的空间O(n),那么我们可以使用 hashtable来解决,但是不给使用额外空间的话,又该怎么做的呢?

位运算

^ 异或 同0异1

如果用代码表示,是非常简单的

public class Solution {    public int singleNumber(int[] nums) {        int size = nums.length;        int x = nums[0];        for(int i=1;i<size;i++){            x ^= nums[i];        }        return x;    }}

想象有一排的开关,还有一堆的操作,每一个操作对应的是把部分的开关切换,除了一个操作之外,所有的操作都是成对的。
那么不管是否顺序执行,最后打开的开关位置,就是唯一的那个操作对应的位置。(成对出现的操作,不管是否依次出现,都会效果抵消了)

0 0
原创粉丝点击