leetcode解题之136 #Single Number Java版(只出现一次的数字)
2017-03-14 13:24
381 查看
136. Single Number
Given an array of integers, every element appearstwice except for one. Find that single one.Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
只出现一次的数字,其他全部两次,能不使用额外的空间吗?
使用map:
public int singleNumber(int[] nums) { int i = 0; int j = nums.length - 1; Map<Integer, Integer> map = new HashMap<>(); while (i <= j) { if (map.containsKey(nums[i])) map.put(nums[i], map.get(nums[i])+1); else map.put(nums[i], 1); i++; } i = 0; while (i <= j) { if (map.get(nums[i]) == 1) break; i++; } return nums[i]; }
使用异或运算:
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
0与任何数做异或都是 那个数,相同的数字做异或等于0;
1. a ^ b = b ^ a
2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
public int singleNumber(int[] nums) { int result = nums[0]; for (int i = 1; i < nums.length; i++) { result = result ^ nums[i]; } return result; }
相关文章推荐
- 【leetcode】数组中找出只出现一次的数字(Single Number)
- 寻找只出现一次的数字(LeetCode: Single Number II)
- Leetcode 137 Single Number II 仅出现一次的数字
- LeetCode 137 Single Number II(只出现一次的数字 II)(*)
- 【leetcode】在一堆每个数字都出现三次的数组中,找到那个只出现一次的数(Single Number II)
- Leetcode 260 Single Number III 仅出现一次的数字
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(只出现一次的数字)】
- [leetcode]136. Single Number@Java解题报告
- LeetCode 260 Single Number III(数组中只出现一次的数字3)
- LeetCode 137 Single Number II(仅仅出现一次的数字 II)(*)
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(仅仅出现一次的数字)】
- 【LeetCode-面试算法经典-Java实现】【137-Single Number II(只字出一次的数字II)】
- 位运算-Single Number II(给定一个数组,除了一个数字出现一次,其他都出现三次,求出现一次的数)
- 【Leetcode】136-single-number【Java实现】【位操作】
- Single Number III & 数组中只出现一次的数字
- leetcode_137. Single Number II 只出现一次的数字 II 偏离了题目考点,主要是为了写下java
- 剑指offer解题报告(Java版)——数组中只出现一次的数字 40
- single-number、single-number2,数组中只出现一次的数字
- 位运算-Single Number III(只有两个不同的数字出现了一次,其余出现了两次,找出这两个数)