짝수 인덱스 요소는 더 작고 홀수 인덱스 요소는 더 큰 배열을 다시 정렬합니다.

난이도 쉽게
자주 묻는 질문 아 발라 라 에픽 시스템 포카이트 Roblox 테슬라
배열조회수 74

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

문제 정책

당신은 정렬 of 정수. “짝수 인덱스 요소는 더 작고 홀수 인덱스 요소는 더 큰 배열 재 배열”문제는 짝수 인덱스 요소가 수정 된 배열의 홀수 인덱스 요소보다 작아야하는 방식으로 배열을 재 배열하도록 요구합니다.

arr[]={ 2,5,7,1,3,4 }
2 7 1 5 3 4

설명 : 2는 짝수 인덱스 위치 (0 인덱스)에 있으므로 다음 홀수 인덱스 요소보다 작고 1은 홀수 인덱스 요소에있는 5보다 작습니다.

인덱스 된 요소가 홀수 인덱스보다 작도록 배열을 재배 열하는 알고리즘

1. Traverse the array from 0 to n-1(less than the length of the array).
2. Check if the index is even and the next element is smaller than the current element then swap both of the numbers.
3. Check if the index is odd and the next element is greater than the current element, then swap both of the numbers.
4. Print the array.

설명

길이 n의 배열이 주어집니다. 짝수 인덱스 요소가 홀수 인덱스 요소보다 작은 방식으로 배열을 재 배열하도록 요청 받았습니다. 조건이 충족되지 않으면 요소를 교체하여이를 수행합니다. 먼저 유형이 짝수인지 홀수인지 확인한 다음 수정해야합니다. 정렬.

0에서 n-1 미만까지 배열을 탐색합니다. 여기서 n은 배열의 길이입니다. 배열에있는 경우 다음 요소와 비교할 것이기 때문에 순회까지 n-1보다 작은 하나를 가져옵니다. 따라서 비교를 위해 그 자리를 떠나야합니다. 그렇지 않으면 오류가 발생합니다. n보다 작을 때까지 반복하면 배열에 존재하지 않는 인덱스에 도달합니다. 이것이 우리가 0에서 n – 1 미만의 순회를 취한 이유입니다.

배열을 탐색하여 'i'의 각 값이 짝수인지 홀수인지 확인하고 array [i]가 다음 요소보다 큰지 확인합니다. i는 확실히 홀수이고 홀수 위치 요소는 짝수 위치 요소보다 작기 때문에 다음 요소 위치를 의미합니다. 그래서 우리는 arr [i]가 현재 짝수 요소이고 arr [i + 1]이 다음 홀수 위치 요소이기 때문에 요소를 교체 할 것입니다.

이제 동시에 'i'의 값이 홀수인지 확인하고이 인덱스의 요소가 이전 요소보다 작은 지 확인하고 배열의 값을 교체합니다. 가능한 모든 값을 바꾼 후 이렇게 구성된 배열이 최종적이고 원하는 출력이됩니다.

짝수 인덱스 요소는 더 작고 홀수 인덱스 요소는 더 큰 배열을 다시 정렬합니다.

암호

인덱스 된 요소가 홀수 인덱스보다 작도록 배열을 재배 열하는 C ++ 코드

#include <iostream>
using namespace std;

void evenOddComparison (int* arr, int n)
{
    for (int i = 0; i < n - 1; i++)
    {
        if (i % 2 == 0 && arr[i] > arr[i + 1])
            swap(arr[i], arr[i + 1]);

        if (i % 2 != 0 && arr[i] < arr[i + 1])
            swap(arr[i], arr[i + 1]);
    }
}

void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
        cout << arr[i] << " ";

    cout << endl;
}

int main()
{
    int arr[] = {  2,5,7,1,3,4  };
    int n = sizeof(arr) / sizeof(arr[0]);

    evenOddComparison (arr, n);

    printArray(arr, n);

    return 0;
}
2 7 1 5 3 4

인덱스 된 요소가 홀수 인덱스보다 작도록 배열을 재배 열하는 Java 코드

class rearrangeArray
{
    public static void evenOddComparison(int arr[], int n)
    {

        int temp;
        for (int i = 0; i < n - 1; i++)
        {
            if (i % 2 == 0 && arr[i] > arr[i + 1])
            {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
            if (i % 2 != 0 && arr[i] < arr[i + 1])
            {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
    }
    public static void printArray(int arr[], int size)
    {
        for (int i = 0; i < size; i++)
            System.out.print(arr[i] + " ");

        System.out.println();
    }
    public static void main(String[] args)
    {
        int arr[] = { 2,5,7,1,3,4 };
        int n = arr.length;

        evenOddComparison (arr, n);

        printArray(arr, n);
    }
}
2 7 1 5 3 4

복잡성 분석

시간 복잡성

O (N) 어디에 "엔" 배열의 요소 수입니다. 방금 배열을 순회하고 요소를 교체 했으므로 시간 복잡도는 선형입니다.

공간 복잡성

O (1) 상수 공간을 사용했지만 프로그램 전체가 O (n) 공간을 차지하기 때문입니다.

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