您的位置:首页 > 编程语言 > Java开发

LeetCode[136] Single Number 位运算异或,HashMap(Java)

2015-05-29 10:28 501 查看

Problem:

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

Thought1:

The standard key to solve this problem is bit manipulation. As XOR will return 1 only when two bits are different, so if two numbers are the same, XOR will return 0. Thus the last remaining number will be the single one.


Java Solution1

public class SingleNumber {
// method 1:Bit manipulation: XOR
public int singleNumber(int[] nums) {
int result = nums[0];
for (int i = 1; i < nums.length; i++) {
result = result ^ nums[i];
}
return result;
}


Thought2:

Since the hint tags show that one of the ways to solve this problem is to utilize the HashTable(HasnMap in Java), so I have also tried this one.


Java Solution2

// method 2: HashMap
public int singleNumberHashMap(int[] nums) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();

for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i])) {
map.remove(nums[i]);
} else {
map.put(nums[i], i);
}
}
// System.out.println(map.entrySet());
for(Map.Entry<Integer, Integer> m : map.entrySet()){
return m.getKey();
}
return 0;
}


Online Judge: Single Number

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: