LeetCode 1295. 统计位数为偶数的数字

    技术2024-08-01  70

    目录结构

    1.题目

    2.题解

    2.1字符串

    2.2数学


    1.题目

    给你一个整数数组 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 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    2.题解

    2.1字符串

    遍历数组 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; } } 时间复杂度:空间复杂度:

    2.2数学

    以 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; } } 时间复杂度:空间复杂度:
    Processed: 0.018, SQL: 9