82. Single Number [easy]
2018-06-18 01:25:19来源:未知 阅读 ()
Description
Given 2*n + 1
numbers, every numbers occurs twice except one, find it.
Example
Given [1,2,2,1,3,4,3]
, return 4
刷题中,遇到一个比较有趣的题目,记录一下。
题目给了2*n+1个数,其中有n组数成双出现,只有一只单身贵族。那么如何找到这个数呢?一开始想了一个比较笨的方法,先将数组排序,看连续出现的两个数是否一样,不一样的就是要找的那个。
方法一:
public class Solution { /** * @param A: An integer array * @return: An integer */ public int singleNumber(int[] A) { // write your code here Arrays.sort(A); if(A.length==1){ return A[0]; } for(int i=0;i<A.length;i+=2){ //注意i迭代数为2 if(i==A.length-1) return A[i]; //如果是最后一个,直接返回该值 if(A[i]!=A[i+1]) return A[i]; } return 0; } }
方法二:
在网上找到的一种更巧妙的方法,利用“异或”运算的一个性质:(1)一个数与另外两个相同的数异或之后,还等于这个数(2)异或运算的可交换性
例如: 2 XOR 1=3 3 XOR 1=2 也可以描述为 2 XOR (1 XOR 1)=2 XOR 0=2.
对于本题来说,把所有数XOR得到的结果就是那只“单身贵族”:
public class Solution { /** * @param A: An integer array * @return: An integer */ public int singleNumber(int[] A) { //根据题目的意思,A数组中至少有一个数 int res=A[0]; for(int i=1;i<A.length;i++){ res^=A[i]; } return res; } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:mybatis入门2
- Java学习笔记(5)--- Number类和Math 类,String类的应用 2019-12-04
- 三、单例模式 2019-11-17
- java当中JDBC当中请给出一个DataSource的单态模式(SingleTo 2019-10-30
- java基础系列(一):Number,Character和String类及操作 2019-10-25
- 通俗易懂spring之singleton和prototype 2019-10-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash