您的位置:首页 > 其它

leetcode -- Single Number II

2013-10-05 14:43 288 查看
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 }


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