美文网首页
LeetCode题解之统计位数为偶数的数字

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

作者: l1fe1 | 来源:发表于2020-07-11 17:00 被阅读0次

    统计位数为偶数的数字

    题目描述

    给你一个整数数组 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题解之统计位数为偶数的数字

          本文链接:https://www.haomeiwen.com/subject/mfpicktx.html