时间:2020-11-02 17:14:42 | 栏目:Python代码 | 点击:次
问题描述
给出一个整数数组 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 是位数为偶数的数字。
解决方案
首先看到题目中所描述的位数为偶数的数字,这时就要看清楚这个位数是指几位数的位数还是第几位的位数了,然后通过观察后面给的输出样例,就可以发现是指的几位数。那么接下来就可以开始解决了。既然统计个数,首先想到的就应该是具有遍历功能的for循环了,然后再判断几位数,不妨用 len 函数。但是要注意的是它给的列表中的数字是数字类型,自然是没有 len 的,所以需要用 str 函数先将其转化为字符串类型,然后就可以设置条件来统计为偶数位的个数了。
代码示例:
class Solution: def findNumbers(self, nums: List[int]) -> int: num = 0 for i in nums: if len(str(i))%2 == 0: num += 1 return num
知识点补充:
统计位数为偶数的数字(数学 + 字符串)
给你一个整数数组 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
思路:
水题,直接转字符串判断数字长度即可。
时间复杂度:O(NK),N是nums长度,K是max(nums)长度
空间复杂度:O(K)
class Solution(object): def findNumbers(self, nums): """ :type nums: List[int] :rtype: int """ res = 0 for num in nums: if len(str(num)) % 2 == 0: res += 1 return res
总结