欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++題解LeetCode1295統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字

 更新時(shí)間:2023年01月03日 10:49:00   作者:劉09k11  
這篇文章主要為大家介紹了C/C++題解LeetCode1295統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目描述

1295. 統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字 - 力扣(LeetCode)

給你一個(gè)整數(shù)數(shù)組 nums,請(qǐng)你返回其中位數(shù)為 偶數(shù) 的數(shù)字的個(gè)數(shù)。

示例 1:

輸入:nums = [12,345,2,6,7896]
輸出:2
解釋:
12 是 2 位數(shù)字(位數(shù)為偶數(shù)) 
345 是 3 位數(shù)字(位數(shù)為奇數(shù))  
2 是 1 位數(shù)字(位數(shù)為奇數(shù)) 
6 是 1 位數(shù)字 位數(shù)為奇數(shù)) 
7896 是 4 位數(shù)字(位數(shù)為偶數(shù))  
因此只有 12 和 7896 是位數(shù)為偶數(shù)的數(shù)字

示例 2:

輸入:nums = [555,901,482,1771]
輸出:1 
解釋: 
只有 1771 是位數(shù)為偶數(shù)的數(shù)字。

提示:

1 <= nums.length <= 500

1 <= nums[i] <= 10^5

思路分析

題目要求是十進(jìn)制數(shù)求位數(shù),所以最先想到的思路就是依次除進(jìn)制數(shù)10取商,然后再除,獲取到做除法的次數(shù)即為位數(shù)

此處可以使用遞歸,也可以使用for循環(huán), 如果是其他進(jìn)制數(shù),只需要修改結(jié)束條件和除數(shù)

題目給的條件 1< num < 10^5, 所以最多循環(huán)五次,不用考慮性能問題導(dǎo)致時(shí)間超時(shí)

默認(rèn)位數(shù)是值1 遞歸結(jié)束條件就是 是否 < 10,遞歸體就是將當(dāng)前位和之前的位數(shù)求和.求解即可

利用to_string函數(shù)可以將整數(shù)轉(zhuǎn)換成字符串

然后用string類自帶的求長(zhǎng)度函數(shù)可以求出有幾位

然后直接對(duì)2求余就知道是奇數(shù)還是偶數(shù)了。

AC 代碼

class Solution {
public:
    int getLengthOfNumber (int num) {
    int lenght = 1;
    if (num < 10) {
        return lenght;
    }
    num = num / 10;
    lenght =  getLengthOfNumber(num) + lenght;
    return lenght;
}
    int findNumbers(vector<int>& nums) {
        int num = 0;
        int length = (int)nums.size();
        for (int i = 0 ; i < length; i++) {
            int length = getLengthOfNumber(nums[i]);
            if (length % 2 == 0) {
                num++;
            }
        }
        return num;
    }
};
class Solution {
public:
    int findNumbers(vector<int>& nums) {
        int count = 0;
        for(auto v : nums)
        {
            string x = to_string(v);
            if(x.size()%2 == 0)
                count++;
        }
        return count;
    }
};

將int轉(zhuǎn)為String

調(diào)用.length,然后%2==0即為偶數(shù) - 統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字

代碼

class Solution {
    public int findNumbers(int[] nums) {
        int res=0;
        for(int i:nums){
            if(String.valueOf(i).length()%2==0){
                res++;
            }
        }
???????        return res;
    }
}

3種方法 - 統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字

1. 把數(shù)字轉(zhuǎn)成字符串

public int findNumbers(int[] nums) {
    int count = 0;
    for (int i = 0; i < nums.length; i++) {
        if (String.valueOf(nums[i]).length() % 2 == 0) {
            count++;
        }
    }
    return count;
}

2. 數(shù)字循環(huán)除10,統(tǒng)計(jì)等于0的時(shí)候除10的次數(shù),偶數(shù)次則該數(shù)為偶數(shù)位

public int findNumbers(int[] nums) {
    int count = 0;
    for (int i = 0; i < nums.length; i++) {
        int N = nums[i];
        //記錄除10的次數(shù)
        int countTen = 0;
        while (N != 0) {
            N/=10;
            countTen++;
        }
        //如果除10的次數(shù)是偶數(shù)次,則該數(shù)為偶數(shù)位數(shù)
        if (countTen % 2 == 0) {
            count++;
        }
    }
    return count;
}

3. 已知范圍為1 <= nums[i] <= 10^5,所以只有兩個(gè)區(qū)間內(nèi)的數(shù)為偶數(shù)位10~99以及1000~9999

public int findNumbers(int[] nums) {
    int count=0;
    for(int i=0;i<nums.length;++i){
        if((nums[i]>=10&&nums[i]<100)||(nums[i]>=1000&&nums[i]<10000))
            count++;
    }
    return count;        
}

以上就是C/C++題解LeetCode1295統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字的詳細(xì)內(nèi)容,更多關(guān)于C/C++統(tǒng)計(jì)位數(shù)為偶數(shù)字的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c++ int轉(zhuǎn)string方法

    c++ int轉(zhuǎn)string方法

    int 轉(zhuǎn)string的方法,用到了特分享一下方便需要的朋友
    2013-01-01
  • C語言實(shí)現(xiàn)三子棋(井字棋)算法

    C語言實(shí)現(xiàn)三子棋(井字棋)算法

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)三子棋(井字棋)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MATLAB實(shí)現(xiàn)五子棋游戲(雙人對(duì)戰(zhàn)、可悔棋)

    MATLAB實(shí)現(xiàn)五子棋游戲(雙人對(duì)戰(zhàn)、可悔棋)

    這篇文章主要為大家詳細(xì)介紹了MATLAB實(shí)現(xiàn)五子棋游戲,可以進(jìn)行雙人對(duì)戰(zhàn)、也可悔棋,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C++如何動(dòng)態(tài)的生成對(duì)象詳解

    C++如何動(dòng)態(tài)的生成對(duì)象詳解

    C++是不支持根據(jù)類名動(dòng)態(tài)地生成對(duì)象的,比如從一個(gè)文本文件中讀取類名然后構(gòu)造一個(gè)對(duì)象.主要原因是沒有豐富的動(dòng)態(tài)元信息,沒有單根類庫(kù)。那么下面這篇文章就來給大家介紹C++是如何動(dòng)態(tài)的生成對(duì)象,有需要的朋友們可以參考借鑒。
    2017-02-02
  • C++實(shí)現(xiàn)Linux下彈出U盤的方法

    C++實(shí)現(xiàn)Linux下彈出U盤的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)Linux下彈出U盤的方法,實(shí)例分析了C++在Linux平臺(tái)上進(jìn)行IO操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C/C++后端學(xué)習(xí)與練習(xí)深入

    C/C++后端學(xué)習(xí)與練習(xí)深入

    這篇文章主要介紹了C/C++對(duì)于后端的學(xué)習(xí)與練習(xí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C++利用Socket實(shí)現(xiàn)主機(jī)間的UDP/TCP通信

    C++利用Socket實(shí)現(xiàn)主機(jī)間的UDP/TCP通信

    這篇文章主要為大家詳細(xì)介紹了C++如何利用Socket實(shí)現(xiàn)主機(jī)間的UDP/TCP通信功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-01-01
  • C++學(xué)習(xí)之虛函數(shù)表與多態(tài)詳解

    C++學(xué)習(xí)之虛函數(shù)表與多態(tài)詳解

    這篇文章主要為大家詳細(xì)介紹了C++中虛函數(shù)表與多態(tài)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,感興趣的小伙伴可以了解一下
    2023-03-03
  • visual studio 2013中配置opencv圖文教程 Opencv2.4.9安裝配置教程

    visual studio 2013中配置opencv圖文教程 Opencv2.4.9安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了Opencv2.4.9安裝教程,以及在visualstudio 2013中opencv的配置步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C++表達(dá)式new與delete知識(shí)詳解

    C++表達(dá)式new與delete知識(shí)詳解

    這篇文章主要為大家詳細(xì)介紹了C++表達(dá)式new與delete知識(shí)點(diǎn),學(xué)習(xí)如何動(dòng)態(tài)創(chuàng)建對(duì)象,動(dòng)態(tài)創(chuàng)建的對(duì)象與一般對(duì)象的區(qū)別,動(dòng)態(tài)創(chuàng)建的對(duì)象的初始化以及釋放動(dòng)態(tài)分配的內(nèi)存等知識(shí)點(diǎn),感興趣的朋友可以參考一下
    2016-05-05

最新評(píng)論