leetcode-136-只出现一次的数字

Posted nxzblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-136-只出现一次的数字相关的知识,希望对你有一定的参考价值。

问题:

技术图片

 

package com.example.demo;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Test136 

    /**
     * 借助hash表
     */
    public int singleNumber(int[] nums) 
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; i++) 
            if (set.contains(nums[i])) 
                set.remove(nums[i]);
             else 
                set.add(nums[i]);
            
        
        int res = 0;
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()) 
            res = iterator.next();
        
        return res;
    

    /**
     * 数学方式:res = 2(a + b + c) - (a + a + b + b + c)  结果就是c,也就是要找的值
     */
    public int singleNumber2(int[] nums) 
        int sum = 0;
        Set<Integer> set = new HashSet<>();
        for (Integer integer : nums) 
            sum += integer;
            set.add(integer);
        

        int twoSum = 0;
        for (Integer integer : set) 
            twoSum += integer;
        
        return 2 * twoSum - sum;
    

    /**
     * 利用位运算,相同的值异或为0,不同的值异或为1
     */
    public int singleNumber1(int[] nums) 
        int res = nums[0];
        for (int i = 1; i < nums.length; i++) 
            res ^= nums[i];
        
        return res;
    

    public static void main(String[] args) 
        Test136 t = new Test136();
        int[] arr = 2, 2, 1, 1, 3;
        int i = t.singleNumber2(arr);
        System.out.println(i);
    

 

以上是关于leetcode-136-只出现一次的数字的主要内容,如果未能解决你的问题,请参考以下文章

leetcode136 只出现一次的数字(Easy)

LeetCode 136. 只出现一次的数字

LeetCode-136. 只出现一次的数字(java)

Leetcode-136. 只出现一次的数字

[leetcode]136. 只出现一次的数字

LeetCode 136 Single Number(只出现一次的数字)