统计位数为偶数的数字
题目描述
给你一个整数数组 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;
}
}
网友评论