首页 > 其他 > 详细

[LeetCode] Single Number II

时间:2015-08-17 13:31:00      阅读:210      评论:0      收藏:0      [点我收藏+]

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?

 

     这道题呢和之前的single number不同的就是【不是single number的number】出现次数变为了三次。

     那么只有一个hashset再借助hashset的特性就比较难实现了。

     不过如果用两个hashset的话就很简单了。一个用来store非single numbe,另一个在所有的非single number移除后剩下的就是要求的single number了。

     因为这里的难点在于如果进行第三次hashset.add()的时候我们怎样判断这个number前面是否已经add过两次。

     代码如下。~

public class Solution {
    public int singleNumber(int[] nums) {
        HashSet<Integer> store=new HashSet<Integer>();
        HashSet<Integer> result=new HashSet<Integer>();
        for(int i=0;i<nums.length;i++){
            if(!result.add(nums[i])){
                result.remove(nums[i]);
                store.add(nums[i]);
            }else{
               if(store.contains(nums[i])){
                   result.remove(nums[i]);
               } 
            }
        }
        return result.iterator().next();
    }
}

 

[LeetCode] Single Number II

原文:http://www.cnblogs.com/orangeme404/p/4736114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!