位运算中等 LeetCode137. 只出现一次的数字 II NC227 只出现一次的数字(二)

137. 只出现一次的数字 II

描述

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

分析

用0~31位看数组里的数,如果在某一位是的数字的个数是3的倍数,说明“只出现一次的数”在这一位是0,否则在这一位是1。

import java.util.*;
public class Solution {
    public int singleNumber (int[] nums) {
        int ans = 0;
        for(int i = 0; i < 32; i++){
            int cnt = 0;
            int wei = 1 << i;
            for(int num : nums){
                if((wei & num) != 0){
                    cnt++;
                }
            }
            if(cnt % 3 != 0){
                ans |= 1 << i;
            }
        }
        return ans;
    }
}

你可能感兴趣的:(leetcode,算法,动态规划)