剑指 Offer 56 - II. 数组中数字出现的次数 II

package leetcode;

public class offer_56_2 {
    public int singleNumber(int[] nums) {
        //用一个数组记录每一位出现的次数,如果出现三次那一定是三的倍数,取余后就是当前值
        int[] arr=new int[32];
        for(int num:nums) {
            for(int i=0;i<32;i++) {
                //更新第i位的次数
                arr[i]+=num&1;
                //更新到i+1位
                num=num>>1;
            }
        }
        int temp=0;
        //取余后回复出temp的值
        for(int i=0;i<32;i++) {
            temp |=(arr[i]%3)<<i;
        }
        return temp;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        offer_56_2 off=new offer_56_2();
        int nums[]={9,1,7,9,7,9,7};    
        System.out.println(off.singleNumber(nums));
    }

}

 

posted on 2022-03-23 21:13  一仟零一夜丶  阅读(24)  评论(0)    收藏  举报