博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Single Number
阅读量:2376 次
发布时间:2019-05-10

本文共 713 字,大约阅读时间需要 2 分钟。

https://oj.leetcode.com/problems/single-number/

Given an array of integers, every element appears twice except for one. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

public int singleNumber(int[] A)

这一题最直接的想法必然是HashMap来遍历然后找出唯一只存在过一次的数字。但是这种做法太直观,一看就知道要挂的。。。

好,让我们重新补习一下我们大学学过的数字逻辑。里面有一种操作叫异或。它有一个特性,0^a = a, 还有一个特性, 就是a^a = 0,还有一个特性叫做交换律。就是a^b^c = a^c^b,那么延伸一下就是a^b^a = a^a^b = 0 ^ b = b

孩纸们,复习完了么?可以去考期末了哟。。。。。

咳咳,好吧,说到这里我相信大家应该知道这一题的做法了吧?实际上这一题就是一个bit operation的题目。把所有东西异或一下剩下来的就是我们要找的。代码很简单,就贴一下好了:

public int singleNumber(int[] A) {        int res = 0;        for(int n : A)            res ^= n;        return res;    }

转载地址:http://wwoxb.baihongyu.com/

你可能感兴趣的文章
中断之原理篇
查看>>
高内聚 低耦合
查看>>
GUI开发之DirectFB
查看>>
GTK/DirectFB两个闪烁的问题
查看>>
《Linux内核修炼之道》 之 高效学习Linux驱动开发
查看>>
编写可移植C/C++程序的要点
查看>>
DirectFB代码导读
查看>>
linux fork函数浅析
查看>>
内核启动时间优化
查看>>
基于Linux的多播编程
查看>>
网络字节序
查看>>
Linux网络命令详解
查看>>
GNU C 的 __attribute__ 机制
查看>>
atoi,atol,strtod,strtol,strtoul详解
查看>>
基于HZK16的汉字显示技术
查看>>
嵌入式web服务器对比
查看>>
select 函数使用指难
查看>>
人类的15个欲望与游戏设计
查看>>
高速缓存
查看>>
kernel基本功练习
查看>>