시스템 설계 면접 질문 너무 개방적이어서 올바른 준비 방법을 알기가 너무 어렵습니다. 이제 구매 후 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 크기 만 선언했습니다.
