1295-统计位数为偶数的数字
给你一个整数数组 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 是位数为偶数的数字。
提示:
1 <= nums.length <= 500
1 <= nums[i] <= 10^5
方法一:枚举 + 字符串
我们枚举数组 nums
中的整数,并依次判断每个整数 x
是否包含偶数个数字。
一种简单的方法是使用语言内置的整数转字符串函数,将 x
转换为字符串后,判断其长度是否为偶数即可。
1 | class Solution { |
1 | class Solution { |
1 | class Solution: |
复杂度分析
时间复杂度:O(N),其中 N 是数组
nums
的长度。这里假设将整数转换为字符串的时间复杂度为 O(1)。空间复杂度:O(1)。
方法二:枚举 + 数学
我们也可以使用语言内置的以 10
为底的对数函数 log10()
来得到整数 x
包含的数字个数。
一个包含 k
个数字的整数 x
满足不等式 10^{k-1} \leq x < 10^k。将不等式取对数,得到 k - 1 \leq \log_{10}(x) < k,因此我们可以用 k = \lfloor\log_{10}(x) + 1\rfloor 得到 x
包含的数字个数 k
,其中 \lfloor a \rfloor 表示将 a 进行下取整,例如 \lfloor 5.2 \rfloor = 5。
1 | class Solution { |
1 | class Solution { |
1 | class Solution: |
复杂度分析
时间复杂度:O(N),其中 N 是数组
nums
的长度。空间复杂度:O(1)。
Comments