136. Single Number

Easy

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
package leetcode.easy;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set; public class SingleNumber {
@org.junit.Test
public void test() {
int[] nums1 = { 2, 2, 1 };
int[] nums2 = { 4, 1, 2, 1, 2 };
System.out.println(singleNumber1(nums1));
System.out.println(singleNumber1(nums2));
System.out.println(singleNumber2(nums1));
System.out.println(singleNumber2(nums2));
System.out.println(singleNumber3(nums1));
System.out.println(singleNumber3(nums2));
System.out.println(singleNumber4(nums1));
System.out.println(singleNumber4(nums2));
} public int singleNumber1(int[] nums) {
HashSet<Integer> set = new HashSet<Integer>();
int result = 0;
for (int i = 0; i < nums.length; i++) {
if (!set.contains(nums[i])) {
set.add(nums[i]);
} else {
set.remove(nums[i]);
}
}
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
result = it.next();
}
return result;
} public int singleNumber2(int[] nums) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int result = 0;
for (int i = 0; i < nums.length; i++) {
if (!map.containsKey(nums[i])) {
map.put(nums[i], 1);
} else {
map.remove(nums[i]);
}
}
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
result = it.next();
}
return result;
} public int singleNumber3(int[] nums) {
HashSet<Integer> set = new HashSet<Integer>();
int sumSet = 0;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
set.add(nums[i]);
sum += nums[i];
}
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
sumSet += it.next();
}
return 2 * sumSet - sum;
} public int singleNumber4(int[] nums) {
int a = 0;
for (int i = 0; i < nums.length; i++) {
a ^= nums[i];
}
return a;
}
}

LeetCode_136. Single Number的更多相关文章

  1. [LeetCode] Single Number III 单独的数字之三

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  2. [LeetCode] Single Number II 单独的数字之二

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  3. [LeetCode] Single Number 单独的数字

    Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...

  4. LeetCode Single Number I / II / III

    [1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...

  5. LeetCode——Single Number II(找出数组中只出现一次的数2)

    问题: Given an array of integers, every element appears three times except for one. Find that single o ...

  6. [LintCode] Single Number 单独的数字

    Given 2*n + 1 numbers, every numbers occurs twice except one, find it. Have you met this question in ...

  7. 【LeetCode】Single Number I & II & III

    Single Number I : Given an array of integers, every element appears twice except for one. Find that ...

  8. LeetCode 【Single Number I II III】

    Given an array of integers, every element appears twice except for one. Find that single one. 思路: 最经 ...

  9. Add Digits, Maximum Depth of BinaryTree, Search for a Range, Single Number,Find the Difference

    最近做的题记录下. 258. Add Digits Given a non-negative integer num, repeatedly add all its digits until the ...

随机推荐

  1. webpack 配置react脚手架(四):路由配置

    1. 由于 react-router 是集成了 react-router-dom 和 react-router-native的一起的,所以这里要使用的是 react-router-dom, 2. 安装 ...

  2. Jquery “This”的指向

    JavaScript中的this不总是指向当前对象,函数或类中的this指向与调用这个函数的对象以及上下文环境是息息相关的.如在全局作用域调用一个含this的对象,此时当前对象的this指向的是win ...

  3. 通过supervisor自启动kafka服务

    一.supervisor安装:echo_supervisord_conf > /etc/supervisord.conf 二.生成基础配置:vi /etc/supervisord.conf最后添 ...

  4. iwap:修改菜单树文件

    1.添加mysql数据库连接的jar包. 2.

  5. TensorFlow(九):卷积神经网络

    一:传统神经网络存在的问题 权值太多,计算量太大 权值太多,需要大量样本进行训练 二:卷积神经网络(CNN) CNN通过感受野和权值共享减少了神经网络需要训练的参数个数. 三:池化 四:卷积操作 五: ...

  6. NetworkX系列教程(9)-线性代数相关

    小书匠 Graph 图论  学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后 ...

  7. shell 边边角角

    [Shell学习笔记] 数组.关联数组和别名使用 Linux中bash脚本数组和字典使用举例 Linux Shell 通配符.元字符.转义符使用实例介绍

  8. Best free and public DNS servers of 2019

    1. OpenDNSPrimary, secondary DNS servers: 208.67.222.222 and 208.67.220.220 2. CloudflarePrimary, se ...

  9. 在默认使用apache中央仓库时, 报错 protocol_version

    https://cloud.tencent.com/developer/ask/136221/answer/241408 2018年6月,为了提高安全性和符合现代标准,不安全的TLS 1.0和1.1协 ...

  10. Java中使用md5进行hash运算

    public class Md5Util { /** * @author Bean_bag * @description 进行Hash运算 * * @param input 参数字符串 * @retu ...