zoukankan      html  css  js  c++  java
  • Single Number leetcode java

    问题描述:

    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();
    }
     
  • 相关阅读:
    一次摸鱼
    scenes
    mysql日志
    十万个为什么
    ss
    mysql之explain
    mysql之索引
    mysql1
    分页
    ajax分页
  • 原文地址:https://www.cnblogs.com/mydesky2012/p/5032136.html
Copyright © 2011-2022 走看看