首页 > 编程语言 > 详细

Single Number leetcode java

时间:2015-12-09 11:26:21      阅读:217      评论:0      收藏:0      [点我收藏+]

问题描述:

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?

技术分享

问题分析:要求采用线性时间复杂度,并且最好不使用多余的空间。

一、位操作

异或运算,只有当两个bit不同时,返回1。如果两个数是相同的,异或运算将会返回0。

nums中只含有一个single number,因此,采用异或运算,最后得到的就是所求的single number。

public int singleNumber(int[] nums){

      int single = 0; 

      for(int i = 0; i < nums.length; i ++)

           single = single ^ nums[i];

      return single;

}

二、hashset 

相比于hashtable,hashmap存储的是key-value键值对,hashset直接操作对象,且不允许存储重复元素。

 

public int singleNumber(int[] nums){

 

      HashSet<Integer> set = new HashSet<Integer>();

 

      for(int i = 0; i < nums.length; i ++)

 

           if(!set.add(nums[i])) //若添加存在重复

                set.remove(nums[i]); //删除重复元素

      Iterator<Integer> iterator = set.iterator(); //迭代器,遍历set

 

      return iterator.next();

 

}

 

 

 

 

Single Number leetcode java

原文:http://www.cnblogs.com/mydesky2012/p/5032136.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!