leetcode -- Single Number II

http://www.cnblogs.com/feiling/p/3351379.html

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

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

[解题思路]

人生最悲催的事是刚面完试,leetcode就把我面试的题目给刷出来了。。。。

1.O(n) time complexity O(n) space complexity count the ocurrence of every number

复制代码
 1 public class Solution {
 2     public int singleNumber(int[] A) {
 3         // Note: The Solution object is instantiated only once and is reused by each test case.
 4         int N = A.length;
 5         if(N == 0){
 6             return N;
 7         }
 8         
 9         Map<Integer, Integer> counts = new HashMap<Integer, Integer>();
10         for(int i = 0; i < N; i++){
11             if(counts.containsKey(A[i])){
12                 counts.put(A[i], counts.get(A[i]) + 1);
13             } else {
14                 counts.put(A[i], 1);
15             }
16         }
17         
18         Iterator<Map.Entry<Integer, Integer>> iterator = counts.entrySet().iterator();
19         while(iterator.hasNext()){
20             Map.Entry<Integer, Integer> entry = iterator.next();
21             if(entry.getValue() != 3){
22                 return entry.getKey();
23             }
24         }
25         return 0;
26     }
27 }
复制代码

你可能感兴趣的:(LeetCode,C++,c,面试)