技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完。目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和精力有限,其他语言的实现有兴趣的朋友请自己尝试。
如果有任何问题可以在文章后评论或者私信给我。
如果有朋友希望我讲些其他话题,请在评论区留言或者私信给我。
持续分享,敬请关注。
LeetCode 1295. 找出所有位数为偶数的数字(Find Numbers with Even Number of Digits)
问题描述:
给定一个整数数组nums,返回其中数字个数为偶数的整数。
注:
- 1
- 1
示例:
C语言实现:
我提供两种解法。
方法一:
遍历nums,对每一数字n做如下的操作:
- 定义两个变量d和t,初始值分别为10和0;
- 计算n/d,并将结果赋值给t。如果t大于10,说明n不是一个两位数,然后d*100,即d=1000;继续计算n/d,并将结果赋值给t,如果t大于10,说明n不是一个四位数,如此循环下去,直到t小于10,
- 如果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
赞 (1)
打赏 微信扫一扫
看直播领好礼|邱秋携手科维带你揭秘兴奋剂背后故事
« 上一篇2019-12-27 12:25:06
微软故意的?Windows 10免费升级仍然可进行
下一篇 »2019-12-27 12:25:09