leetcode刷刷題(50) ---- 統計位數爲偶數的數字(C語言版)

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;
}
他山之石:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章