LeetCode题解之统计位数为偶数的数字

统计位数为偶数的数字

题目描述

给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。

示例1 :

输入:nums = [12,345,2,6,7896]
输出:2
解释:
12 是 2 位数字(位数为偶数) 
345 是 3 位数字(位数为奇数)  
2 是 1 位数字(位数为奇数) 
6 是 1 位数字 位数为奇数) 
7896 是 4 位数字(位数为偶数)  
因此只有 12 和 7896 是位数为偶数的数字

示例2 :

输入:nums = [555,901,482,1771]
输出:1 
解释: 
只有 1771 是位数为偶数的数字。

示例3 :

输入:nums = [7,7,7,7]
输出:[0,0,0,0]

提示:

  • 1 <= nums.length <= 500
  • 1 <= nums[i] <= 10^5

解题思路

迭代统计位数为偶数的数字个数,使用位运算优化算法。

复杂度分析

  • 时间复杂度:O(∑logm),其中m为数组中每个元素的值,∑logm为10为底 m 的对数和。
  • 空间复杂度:O(1)。

代码实现

class Solution {
    public int findNumbers(int[] nums) {
        int res = 0;
        int bitCount;
        for (int i = 0; i < nums.length; i ++) {
            bitCount = 0;
            while (nums[i] > 0) {
                nums[i] /= 10;
                bitCount ++;
            }
            if ((bitCount & 1) == 0) {
                res ++;
            }
        }
        return res;
    }
}

你可能感兴趣的:(LeetCode题解之统计位数为偶数的数字)