首页 > 科技 > LeetCode基础算法题第176篇:找出所有位数为偶数的数字

LeetCode基础算法题第176篇:找出所有位数为偶数的数字



技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完。目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和精力有限,其他语言的实现有兴趣的朋友请自己尝试。

如果有任何问题可以在文章后评论或者私信给我。

如果有朋友希望我讲些其他话题,请在评论区留言或者私信给我。

持续分享,敬请关注。




LeetCode 1295. 找出所有位数为偶数的数字(Find Numbers with Even Number of Digits)

问题描述:

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

注:

  • 1
  • 1

示例:

C语言实现:

我提供两种解法。

方法一:

遍历nums,对每一数字n做如下的操作:

  1. 定义两个变量d和t,初始值分别为10和0;
  2. 计算n/d,并将结果赋值给t。如果t大于10,说明n不是一个两位数,然后d*100,即d=1000;继续计算n/d,并将结果赋值给t,如果t大于10,说明n不是一个四位数,如此循环下去,直到t小于10,
  3. 如果t不等于0,则说明t是一个偶数位数,否则t是一个奇数位数;

过程如下图:

代码如下:

方法二:

按照题目的第二条注解,可知,nums里面的数都小于100000的。

那么如果里面的某个数n是偶数位数,它一定满足下面条件中的某一个:

  • 9
  • 999

代码如下:

第二种方法理论上会比第一种好那么一点点。

第一种方法,对每一个数字做判断的时候,都要先计算n/d,然后赋值给t,再判断t的值以后,来确定是否要对d重新赋值,如果要,那么还要重新循环这个操作流程,最后还要根据t的值,对res进行累加操作;而方法二,对每个元素n最多只会判断3次就会得出结果。

Java语言实现:

Java 的实现和C语言的实现一致,不再撰述。

代码如下:

Python语言实现:

Python 的实现和C语言的实现一致,不再撰述。

代码如下:

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1832513.html

setTimeout(function () { fetch('http://www.sosokankan.com/stat/article.html?articleId=' + MIP.getData('articleId')) .then(function () { }) }, 3 * 1000)