2020-6-10
- "Those whom God wishes to destroy, he first makes mad."
------ Euripides
“神欲使之灭亡,必先使 之疯狂。”
– 希腊悲剧作家 – 欧底庇德斯
题目:
- leetcode – 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] <= 10^5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
个人解答:(C版本)
int findNumbers(int* nums, int numsSize){
if(nums == NULL || numsSize<=0)
return 0;
int event_count = 0;
for(int i; i<numsSize; ++i)
{
int k = nums[i];
int event_num = 0;
while(k)
{
k /=10;
++event_num;
}
if(event_num%2 == 0)
++event_count;
}
return event_count;
}
- 复杂度分析
1)时间复杂度:O(N^2)。
2)空间复杂度:O(1)。
- 运行结果:
#incluide "math.h"
int findNumbers(int* nums, int numsSize){
if (nums == NULL || numsSize<=0)
return 0;
int event_count = 0;
for (int i; i<numsSize; ++i)
{
if (((int)log10(nums[i])+1) % 2 == 0)
++event_count;
}
return event_count;
}
他山之石: