给你一个整数数组 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
解题思路
这个问题思路非常简单,首先不难想到将数字转为字符串,然后分别判断字符串长度即可。
class Solution:
def findNumbers(self, nums: List[int]) -> int:
return sum(map(lambda n: len(str(n)) % 2 == 0, nums))
当然这个问题可以直接使用数学解法,我们知道数字x
的位数,实际上就是
。
class Solution:
def findNumbers(self, nums: List[int]) -> int:
return sum(map(lambda n: int(math.log(n, 10) + 1) % 2 == 0, nums))
当然你可以采用log
的定义,手动去实现一个类似的功能。
class Solution:
def findNumbers(self, nums: List[int]) -> int:
res = 0
for n in nums:
x = 0
while n:
n //= 10
x += 1
if x % 2 == 0:
res += 1
return res
我将该问题的其他语言版本添加到了我的GitHub Leetcode
如有问题,希望大家指出!!!