统计位数为偶数的数字

2020-06-06  本文已影响0人  WAI_f

题目:

给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。

示例:

输入:nums = [12,345,2,6,7896]
输出:2
解释:
12 是 2 位数字(位数为偶数)
345 是 3 位数字(位数为奇数)
2 是 1 位数字(位数为奇数)
6 是 1 位数字 位数为奇数)
7896 是 4 位数字(位数为偶数)
因此只有 12 和 7896 是位数为偶数的数字

解题方法:

这是我刷的第50道题了,虽然没有写那么多博客,不太好意思把所有的题都写出来,目前刷的都是简单题,有些没有什么价值。恭喜自己吧,以后会刷的更多,继续坚持!
言归正传,这道题我一看到就觉得很简单,不过我想做的好一点,所以就用手上的信息来优化计算过程:

所以只要判断数组中的数字是否在这些范围内就可以了。

代码和结果:

class Solution {
public:
    int findNumbers(vector<int>& nums) {
        int cnt=0;
        for(int i=0;i<nums.size();i++)
        {
            if(nums[i]/10>=1&&nums[i]/100<1)
                cnt++;
            else if(nums[i]/1000>=1&&nums[i]/10000<1)
                cnt++;
            else if(nums[i]==100000)
                cnt++;
        }
        return cnt;
    }
};
运行结果:

很明显,结果并不好,内存消耗太大了。看了一下题解,大佬们把数字转成字符串,然后判断字符串长度,真的是一个好想法,我怎么没想到!

新的代码:

class Solution {
public:
    int findNumbers(vector<int>& nums) {
        int cnt=0;
        for(int i=0;i<nums.size();i++)
        {
            if(to_string(nums[i]).size()%2==0)
                cnt++;
        }
        return cnt;
    }
};

运行结果:


哎,结果也并不怎么好,但是他的优点是适用性更广,行啦,今天就到这了。

原题链接:https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits/

上一篇 下一篇

猜你喜欢

热点阅读