LC 1295.Find Numbers with Even Number of Digits
题目描述
这是 LeetCode
上的 1295.
统计位数为偶数的数字 ,难度为简单。
给你一个整数数组 nums
,请你返回其中位数为
偶数 的数字的个数。
示例 1:
1 |
|
示例 2:
1 |
|
提示:
1 <= nums.length <= 500
1 <= nums[i] <= 10^5
解答
方法一:枚举 + 字符串
遍历 nums
中的每一个数字 num
,然后转化为字符串,判断字符串的长度就可以确定奇偶性。
1 |
|
时间复杂度:\(O(n)\),其中
n
为nums
数组的长度,这里假设Integer.toString()
的时间复杂度为 \(O(1)\)。空间复杂度:\(O(1)\),使用了常数个变量。
方法二:枚举 + 数学
也可以用内置函数 Math.log10()
来得到数字的位数。
一个包含 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 |
|
- 时间复杂度:\(O(n)\),其中
n
为nums
数组的长度。 - 空间复杂度:\(O(1)\)。
每题一图
LC 1295.Find Numbers with Even Number of Digits
https://chen-huaneng.github.io/2023/12/11/2023-12-11-2023-12-11-lc-1295/