짝수 자릿수로 숫자 찾기 Leetcode 솔루션


난이도 쉽게
자주 묻는 질문 Quora
배열

이 문제에서 우리는 정렬 양의 정수. 숫자가 짝수 인 숫자의 개수를 찾아야합니다.

Array = {123 , 34 , 3434 , 121 , 100}
2

설명: 34와 3434 만 숫자가 짝수 인 정수입니다. 그래서 우리는 2를 인쇄합니다.

Array = {1 , 111 , 11111 , 12345}
0

설명: 주어진 배열에 짝수의 자릿수를 가진 정수가 없습니다.

접근

이 문제의 핵심은 정수의 자릿수를 세는 것입니다. 그렇게 할 수 있다면 배열의 모든 정수에 대해 프로세스를 반복하고 짝수 자릿수를 가진 정수의 수를 계산할 수 있습니다. 이진 표현에서는 주어진 정수를 오른쪽으로 이동 (또는 2로 나눈 값)하여 숫자를 계산하기 위해 XNUMX이 될 때까지 비트 그것에. 마찬가지로 숫자를 세는 경우 정수를 다음으로 계속 나눌 수 있습니다. 10 그것이되지 않는 한 0. 이 방법은 모든 염기에 적용됩니다.

짝수 자릿수로 숫자 찾기 Leetcode 솔루션

 

암호알고리즘

  1. 함수를 만듭니다. findNumbers () 전달 된 배열에서 자릿수가 짝수 인 정수의 개수를 찾습니다.
  2. 또한 도우미 함수를 만듭니다. numberOfDigits () 다음과 같이 전달 된 정수의 자릿수를 반환합니다.
    1. 초기화 CNT = 0
    2. 정수인 동안 n은 0보다 큽니다.
      1. 증가 CNT, cnt ++
      2. 나누다 n by 10, n / = 10
    3. 반환 CNT
  3. 초기화 결과 = 0은 숫자가 짝수 인 정수의 개수를 저장합니다.
  4. 배열의 모든 요소에 대해 :
    1. 우리는 사용하여 자릿수를 검색합니다. numberOfDigits () 기능
    2. 얻은 자릿수가 짝수 인 경우 :
      1. 증가 결과, 결과 ++
  5. 반환 결과

짝수 자리수 Leetcode 솔루션으로 숫자 찾기 구현

C ++ 프로그램

#include <bits/stdc++.h>
using namespace std;

int numberOfDigits(int n)
{
    int cnt = 0;
    while(n > 0)
    {
        n /= 10;
        cnt++;
    }
    return cnt;
}

int findNumbers(vector <int> &a)
{
    int result = 0;
    for(int &i : a)
        if(numberOfDigits(i) % 2 == 0)
            result++;

    return result;
}

int main()
{
    vector <int> a = {123 , 34 , 3434 , 121 , 100};
    cout << findNumbers(a) << '\n';
    return 0;
}

자바 프로그램

class find_numbers
{
    public static void main(String args[])
    {
        int[] a = {123 , 34 , 3434 , 121 , 100};
        System.out.println(findNumbers(a));
    }

    static int numberOfDigits(int n)
    {
        int cnt = 0;
        while(n > 0)
        {
            n /= 10;
            cnt++;
        }
        return cnt;
    }

    static int findNumbers(int[] a)
    {
        int result = 0;
        for(int i = 0 ; i < a.length ; i++)
            if(numberOfDigits(a[i]) % 2 == 0)
                result++;

        return result;
    }
}
2

짝수 자리수 Leetcode 솔루션으로 찾기 번호의 복잡성 분석

시간 복잡성

시간 복잡성은 의 위에) 여기서 N = 배열의 단일 패스를 수행 할 때 배열의 크기이며 자릿수는 일정한 시간에 검색됩니다.

공간 복잡성

O (1) 일정한 메모리 공간 만 사용하기 때문입니다.