算法leetcode1295. 统计位数为偶数的数字(多语言实现)

Posted 二当家的白帽子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法leetcode1295. 统计位数为偶数的数字(多语言实现)相关的知识,希望对你有一定的参考价值。


文章目录


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

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

分析

  • 面对这道算法题目,二当家的陷入了沉思。
  • 需要遍历数组是无疑的。
  • 中规中矩的方式可以是将数字转为字符串然后判断长度是否为偶数。但是这样需要创建新的字符串出来。
  • 转为字符串是为了快速判断位数,以10为底取对数,有高效的数学函数也是不错的选择。
  • 当然根据提示,我们知道每个数字的取值范围,也可以不去计算数字的位数,直接判断取值。

题解

rust

impl Solution 
    pub fn find_numbers(nums: Vec<i32>) -> i32 
        nums.iter().filter(|&&num| 
            (num >= 10 && num <= 99)
                || (num >= 1000 && num <= 9999)
                || num == 100000
        ).count() as i32
    


go

func findNumbers(nums []int) int 
    ans := 0

	for _, num := range nums 
		if (num >= 10 && num <= 99) || (num >= 1000 && num <= 9999) || num == 100000 
			ans++
		
	

	return ans


typescript

function findNumbers(nums: number[]): number 
    return nums.filter(num => (num >= 10 && num <= 99)
		|| (num >= 1000 && num <= 9999)
		|| num == 100000).length;
;

python

class Solution:
    def findNumbers(self, nums: List[int]) -> int:
        return sum(1 for num in nums if 10 <= num <= 99 or 1000 <= num <= 9999 or num == 100000)


c

int findNumbers(int* nums, int numsSize)
    int ans = 0;

    for (int i = 0; i < numsSize; ++i) 
        if ((nums[i] >= 10 && nums[i] <= 99)
            || (nums[i] >= 1000 && nums[i] <= 9999)
            || nums[i] == 100000) 
            ++ans;
        
    

    return ans;


c++

class Solution 
public:
    int findNumbers(vector<int>& nums) 
        int ans = 0;

        for (int num: nums) 
            if ((num >= 10 && num <= 99)
                || (num >= 1000 && num <= 9999)
                || num == 100000) 
                ++ans;
            
        

        return ans;
    
;

java

class Solution 
    public int findNumbers(int[] nums) 
        int ans = 0;

        for (int num : nums) 
            if ((num >= 10 && num <= 99)
                || (num >= 1000 && num <= 9999)
                || num == 100000) 
                ++ans;
            
        
        
        return ans;
    


原题传送门:https://leetcode.cn/problems/find-numbers-with-even-number-of-digits/


非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~


以上是关于算法leetcode1295. 统计位数为偶数的数字(多语言实现)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-168周赛-1295-统计位数为偶数的数字

1295. 统计位数为偶数的数字『简单』

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

《算法零基础》第18讲:线性枚举- 统计法入门

小航的算法日记线性枚举 - 统计法入门

嘎字符串-统计位数为偶数的数字