zoukankan      html  css  js  c++  java
  • 136. Single Number

    Given a non-empty 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?

    Example 1:

    Input: [2,2,1]
    Output: 1
    

    Example 2:

    Input: [4,1,2,1,2]
    Output: 4
    
     
    class Solution {
        public int singleNumber(int[] nums) {
            int res = 0;
            for(int i : nums){
                res = res ^ i;
            }
            return res;
        }
    }
    class Solution {
        public int singleNumber(int[] nums) {
            //  int res = 0;
            // for (int num : nums) res ^= num;
            // return res;
        Set<Integer> set = new HashSet<>();
            
            for(int n : nums)
            {
                if(set.contains(n))
                    set.remove(n);
                else
                    set.add(n);
            }
           for(Integer n: set){
               return n;
           }
            return -1;
        }
    }

    两种解法,第一种用异或,思路是一个数异或两次等于没有异或。

    第二种是用hashset,遇到重复的就删除,最后肯定只剩下一个。

    或者hashmap

    class Solution {
        public int singleNumber(int[] nums) {
            Map<Integer, Integer> map = new HashMap();
            for(int i : nums){
                int value = map.getOrDefault(i, 0);
                map.put(i, value + 1);
            }
            for(Map.Entry<Integer, Integer> entry : map.entrySet()){
                if(entry.getValue() == 1) return entry.getKey();
            }
            return 0;
        }
    }
  • 相关阅读:
    centos8 安装postresql12
    vs code 开启远程调试步骤
    node 版本管理器 nvs
    Vue I18n Vue.js 的国际化插件+elementUI的使用
    c#结构
    下拉菜单
    使用Convert 类和Parse方法将字符串转换为数值类型
    c# try..... catch
    c#迭代算法
    网页兼容各种浏览器
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/10521657.html
Copyright © 2011-2022 走看看