LeetCode-Easy部分标签为HashTable#136 Single Number
2017-04-02 10:12
549 查看
原题
Given an array of integers, every element appears twice except for one. Find that single one.题目意思
整数数组,除了一个出现一次外,其他都是两次。求这个唯一出现一次的数。题目分析
首先想到借助哈希表,向哈希表中添加,若已存在移除,最后剩下的唯一元素,即为这个唯一出现一次的数。代码实现
这个算法能解决这个问题,因为每个数要么出现1次(只有1个出现1次),要么出现2次,所以如果哈希集合中有了这个元素,表示是重复的那个,直接移除掉即可。最后剩下的那个元素便是出现仅1次的。public static int SingleNumber(int[] nums) { HashSet<int> hash = new HashSet<int>(); foreach(int item in nums) { if (hash.Contains(item)) hash.Remove(item); else hash.Add(item); } return hash.Min(); }
位操作算法
异或操作,抵消掉出现2次的元素,仅剩下1个出现1次的元素。int rslt = nums[0]; for (int i = 1; i < nums.Length;i++ ) { rslt ^= nums[i]; } return rslt;
更多参考
LeetCode-Easy部分中标签为HashTable的所有题目相关文章推荐
- LeetCode-Easy部分中标签为Array#118: Pascal’s Triangle
- LeetCode-Easy部分标签为HashTable 447. Number of Boomerangs
- LeetCode-Easy部分中标签为Two Pointers 125. Valid Palindrome
- LeetCode-Easy部分中标签为String 58. Length of Last Word
- LeetCode-Easy部分中标签为LinkedList 203 Remove Linked List Elements
- LeetCode-Easy部分中标签为Array#119 : Pascal’s Triangle II
- LeetCode-Easy部分中标签为Math 231. Power of Two
- LeetCode-Easy部分中标签为Two Pointers 88. Merge Sorted Array
- LeetCode-Easy部分中标签为Math 507. Perfect Number
- LeetCode-Easy部分中标签为String的所有题目
- LeetCode-Easy部分中标签为HashTable的所有题目
- LeetCode-Easy部分标签为LinkedList 83. Remove Duplicates from Sorted List
- LeetCode-Easy部分标签为HashTable 409. Longest Palindrome
- LeetCode-Easy部分标签为LinkedList 206. Reverse Linked List
- LeetCode-Easy部分中标签为Array的所有题目
- LeetCode-Easy部分标签为HashTable 1. Two Sum(一种战胜95%的提交版本的算法)
- LeetCode-Easy部分标签为LinkedList 237. Delete Node in a Linked List
- LeetCode-Easy部分中标签为LinkedList的所有题目
- LeetCode-Easy部分中标签为LinkedList 160. Intersection of Two Linked Lists
- LeetCode-Easy部分标签为LinkedList 234. Palindrome Linked List