题目大意:
统计位数为偶数的数字
给你一个整数数组 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-解题思路分析/