问题描述:

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();
}
 

最新文章

  1. SQL Server 致程序员(容易忽略的错误)
  2. windows下使用C#获取特定进程网络流量
  3. HTML5Canvas标签(https://developer.mozilla.org)
  4. Azure
  5. VB.NET中的除法运算符 与 C#中的除法运算符
  6. BadgeView的使用介绍
  7. MongoDB 正则表达式
  8. Win2008或IIS7的文件上传大小限制解决方案
  9. 【HDOJ】3061 Battle
  10. Linux Weblogic 数据源 TimesTen配置
  11. PHP使用curl伪造IP地址和header信息
  12. Android常用秘籍总结
  13. jq-animate实现返回顶部效果
  14. ●BZOJ 2442 [Usaco2011 Open]修剪草坪
  15. 【一天一道LeetCode】#349. Intersection of Two Arrays
  16. Anaconda安装Package的问题(Permission Denied)
  17. 第六天 py 加法练习
  18. python(31)——【sys模块】【json模块 &amp; pickle模块】
  19. hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b
  20. 如何手动编译java文件

热门文章

  1. First Steps: Command-line
  2. [HDU 1215] 七夕节(求因子,不超时)
  3. (转载)MySQL用命令行复制表的方法
  4. Java中常用的方法
  5. JVM 及 垃圾回收机制原理
  6. ps/kill/pkill简单应用
  7. VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业、教育、游戏)
  8. 配置多个版本的jdk
  9. Oracle(order by)
  10. 记录flask使用模板时出现的“Internal Server Error”错误