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

난이도 쉽게
자주 묻는 질문 Quora
알고리즘 배열 코딩 인터뷰 인터뷰 준비 리트코드 LeetCodeSolutions조회수 110

시스템 설계 면접 질문 너무 개방적이어서 올바른 준비 방법을 알기가 너무 어렵습니다. 이제 구매 후 Amazon, Microsoft 및 Adobe의 디자인 라운드를 해독할 수 있습니다. 이 책은. 매일 수정 하나 디자인 질문 그리고 나는 당신이 디자인 라운드를 깨뜨릴 수 있다고 약속합니다.

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

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) 일정한 메모리 공간 만 사용하기 때문입니다.

균열 시스템 설계 인터뷰
Translate »
1