1.题目
2.题解
2.1字符串
2.2数学
给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。
示例:
输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 是 3 位数字(位数为奇数) 2 是 1 位数字(位数为奇数) 6 是 1 位数字 位数为奇数) 7896 是 4 位数字(位数为偶数) 因此只有 12 和 7896 是位数为偶数的数字 输入:nums = [555,901,482,1771] 输出:1 解释: 只有 1771 是位数为偶数的数字。提示:
1 <= nums.length <= 5001 <= nums[i] <= 10^5来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
遍历数组 nums 中的整数,将整数转换为字符串后,判断其长度是否为偶数。
public class Solution1295 { public int findNumbers(int[] nums) { int result = 0; for (int t : nums) { String str = String.valueOf(t); if (str.length() % 2 == 0) { result++; } } return result; } } 时间复杂度:空间复杂度:以 10 为底的对数函数 log10() 来得到整数 x 包含的数字个数。
k 位整数 x 满足不等式 。不等式取对数,得 。故可用得到 x 的位数。
public class Solution1295 { public int findNumbers(int[] nums) { int result = 0; for (int t : nums) { if ((int) (Math.log10(t) + 1) % 2 == 0) { result++; } } return result; } } 时间复杂度:空间复杂度: