zoukankan      html  css  js  c++  java
  • LeetCode136---只出现一次的数字

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    说明:

    你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?


    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.stream.IntStream;

    /**
    * @AUTHOR:LKR
    * @DATE:2019/3/6
    * @DESCRIPTION:只出现一次的数字
    **/
    public class OnlyOneNum136 {
    //执行用时: 32 ms,内存消耗: 46.1 MB
    public int singleNumber(int[] nums) {
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    for(int i=0;i<nums.length;i++){
    if(map.containsKey(nums[i])){
    int value = map.get(nums[i]);
    map.put(nums[i],value+1);
    }
    else map.put(nums[i],1);
    }
    int key = 0;
    for(Map.Entry<Integer,Integer> entry:map.entrySet()){
    if(entry.getValue().equals(1)){
    key = entry.getKey();
    }
    }
    return key;
    }

    //执行用时: 80 ms,内存消耗: 43.5 MB
    public int singleNumber2(int[] nums) {
    return Arrays.stream(nums).reduce(0,(left, right) -> left ^ right);
    }

    //执行用时: 1 ms,内存消耗: 39.6 MB
    public int singleNumber3(int[] nums) {
    int result = 0;
    for(int i = 0;i<nums.length;i++){
    result = result ^ nums[i];
    }
    return result;
    }

    }
  • 相关阅读:
    day_10作业
    day_10
    day_09
    day_08
    猜年龄游戏
    day_07
    day_06作业
    day05课堂小结
    day05作业
    day04课堂小结
  • 原文地址:https://www.cnblogs.com/turningli/p/10486630.html
Copyright © 2011-2022 走看看