LeetCode每日一题2025-04-30
1295. 统计位数为偶数的数字 E
给你一个整数数组 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] <=
算法思路
- 遍历:对输入数组
nums中的每个数字num进行遍历(共n个)。 - 计数位数:
- 方法 A(数学方式):不断除以 10 直至
num为 0,统计除法次数。 - 方法 B(字符串方式):将
num转为字符串s = str(num),直接用len(s)获取位数。
- 方法 A(数学方式):不断除以 10 直至
- 判断奇偶:如果位数
digit_count % 2 == 0,则计数器加 1。 - 返回结果:遍历结束后输出计数器的值。
时间复杂度
方法 A:对每个数做除法操作,平均每个数的位数为 d(),总体为 。
方法 B:字符串转换和长度计算也约为 。 由于 num[i] ≤ ,d ≤ 6,故可视为 线性 。
空间复杂度:(忽略输出和输入空间)。
代码实现
1 | from typing import List |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Stay hungry. Stay foolish.!
评论
