X

LEETCODE 1295. Find Numbers with Even Number of Digits 解题思路分析

题目大意:

统计位数为偶数的数字

给你一个整数数组 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

如果想查看本题目是哪家公司的面试题,请参考以下免费链接: https://leetcode.jp/problemdetail.php?id=1295

解题思路分析:

这道题的考点是在于如何求一个数字的位数,最简单的办法是用当前数字不断的除以10,直到等于0为止,进行除法的次数即是该整数的位数。比如:123

123 / 10 = 12;
12 / 10 = 1;
1 / 10 = 0;

一共进行了3次除法,因此123的位数为3。判断出当前数字的位数之后,再看其是否是偶数,如果是返回结果加一。遍历完所有数字之后,所有偶数位数字也就随之统计出来了。

实现代码:

public int findNumbers(int[] nums) {
    int res=0; // 返回结果
    for(int n : nums){ // 循环每个数字
        int d=0; // 位数
        while(n>0){ // 当数字大于0
            n/=10; // 计算位数
            d++;
        }
        // 如果位数是偶数,返回结果加一
        if(d%2==0)res++;
    }
    return res;
}

本题解法执行时间为1ms。

Runtime: 1 ms, faster than 97.79% of Java online submissions for Find Numbers with Even Number of Digits.

Memory Usage: 38.9 MB, less than 100.00% of Java online submissions for Find Numbers with Even Number of Digits.

本网站文章均为原创内容,并可随意转载,但请标明本文链接
如有任何疑问可在文章底部留言。为了防止恶意评论,本博客现已开启留言审核功能。但是博主会在后台第一时间看到您的留言,并会在第一时间对您的留言进行回复!欢迎交流!
本文链接: http://leetcode.jp/leetcode-find-numbers-with-even-number-of-digits-解题思路分析/
Categories: leetcode
kwantong: