주어진 두 행렬이 동일한 지 확인

난이도 쉽게
자주 묻는 질문 긍정 아메요 디디 조랑말
배열 매트릭스 학교 프로그래밍조회수 564

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

문제 정책

두 개의 행렬이 주어지면 두 행렬이 동일한 지 여부를 확인하는 함수를 작성합니다. 즉, 두 행렬의 각 위치에있는 모든 요소가 동일하면 동일하다고 말합니다.

입력 형식

네 개의 정수 값 r1, c1, r2, c2를 포함하는 첫 번째 줄입니다. 여기서 r1과 c1은 첫 번째 행렬의 행과 열 수를 나타냅니다. 그리고 r2, c2는 두 번째 행의 열 수를 나타냅니다. 매트릭스.

c1 정수 값을 포함하는 다음 r1 줄.

그리고 c2 정수 값을 포함하는 다음 r2 줄.

출력 형식

인쇄“Identical matrices”행렬이 동일하면“Not identical matrices".

제약

  • 1 <= r1, c1, r2, c2 <= 5000.
  • 1 <= | m [i] [j] | <= 10 ^ 9 여기서 m은 행렬과 i 번째 행과 j 번째 열에있는 요소의 위치입니다.

4 4 4 4   
1 4 7 9
1 6 7 6
6 3 7 12
4 4 4 4
1 4 7 9
1 6 7 6
6 3 7 12
4 4 4 4
Identical matrices

설명 : 위의 예에서 행렬의 모든 요소는 동일하므로 동일합니다.

아래 이미지를 따라 행렬의 모든 요소를 ​​확인하는 방법을 살펴 보겠습니다. 이것은 더 나은 이해를위한 또 다른 예입니다.

주어진 두 행렬이 동일한 지 확인하는 알고리즘

1. 두 행렬의 각 행에 대해 해당 행의 요소를 비교합니다.

1.1 동일한 경우 다음 행으로 이동합니다.

1.2 그렇지 않으면 "행렬이 동일하지 않음"을 끊고 인쇄합니다.

2. 루프가 끊어지지 않았다면 행렬은 동일합니다.

실시

주어진 두 행렬이 동일한 지 확인하는 C ++ 프로그램

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int r1,c1,r2,c2;
    cin>>r1>>c1>>r2>>c2;
    int a[r1][c1];
    int b[r2][c2];
    for(int i=0;i<r1;i++)
    {
        for(int j=0;j<c1;j++)
        {
            cin>>a[i][j];
        }
    }
    for(int i=0;i<r2;i++)
    {
        for(int j=0;j<c2;j++)
        {
            cin>>b[i][j];
        }
    }
    if(c1!=c2 || r1!=r2)
    {
        cout<<"Not identical matrices";
    }
    else
    {
    int flag=0;    
    for(int i=0;i<r1;i++)
    {
        for(int j=0;j<c1;j++)
        {
            if(a[i][j]!=b[i][j])
            {
                flag=1;
                break;
            }
        }
    }
    if(flag==1)
    {
        cout<<"Identical matrices";
    }
    }
    return 0;
}

주어진 두 행렬이 동일한 지 확인하기위한 Java 프로그램

import java.io.*; 
import java.util.Scanner;
class sum
{ 
    // Driver code 
    public static void main(String[] args) 
    { 
        int r1,c1,r2,c2;
        Scanner inp = new Scanner(System.in);
        r1 = inp.nextInt();
        c1 = inp.nextInt();
        r2 = inp.nextInt();
        c2 = inp.nextInt();
        int a[][] = new int[r1][c1];
        for(int i=0;i<r1;i++)
        {
            for(int j=0;j<c1;j++)
            {
                a[i][j]=inp.nextInt();
            }
        }
        int b[][] = new int[r2][c2];
        for(int i=0;i<r2;i++)
        {
            for(int j=0;j<c2;j++)
            {
                b[i][j]=inp.nextInt();
            }
        }
        if(r1!=r2 && c1!=c2) 
        { 
            System.out.println("\nNot identical matrices"); 
        } 
        else
        {
            for(int i=0;i<r1;i++)
            {
                for(int j=0;j<c1;j++)
                {
                    if(a[i][j]!=b[i][j])
                    {
                        System.out.println("\nNot identical matrices");
                        return;
                    }
                }
            }
            System.out.println("\nIdentical matrices");
        }
    } 
}
2 2 2 2
1 2
3 4
1 2
3 4
Identical matrices

주어진 두 행렬이 동일한 지 확인하기위한 복잡성 분석

시간 복잡성

O (n ^ 2) 여기서 n은 r1 및 c1의 최대 값입니다. 여기서 우리는 두 개의 루프를 첫 번째 루프가 r1 번 실행하고 두 번째 루프가 c1 번 실행됩니다.

공간 복잡성

O (1) 결과를 찾기위한 추가 공간을 만들지 않기 때문입니다. 여기서 우리는 첫 번째 행렬을 입력하기위한 r1 * c1 크기와 두 번째 행렬을 입력하기위한 r2 * c2 크기 만 선언했습니다.

참고

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