Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

중복 요소의 왼쪽 발생을 제거한 후 배열을 찾는 C++ 프로그램

<시간/>

n개의 요소가 있는 배열 A가 있다고 가정합니다. 중복 요소를 제거하고 싶습니다. 배열의 각 요소에 대해 맨 오른쪽 항목만 남기고 싶습니다. 나머지 고유 요소의 상대적 순서는 변경하면 안 됩니다.

따라서 입력이 A =[1, 5, 5, 1, 6, 1]과 같으면 출력은 [5, 6, 1]

이 됩니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

Define two arrays b and vis of size: 1200 each
x := 0
n := size of A
for initialize i := n - 1, when i >= 0, update (decrease i by 1), do:
   if vis[A[i]] is zero, then:
      b[x] := A[i]
      (increase x by 1)
      vis[A[i]] := 1
for initialize i := x - 1, when i >= 0, update (decrease i by 1), do:
   print b[i]

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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

void solve(vector<int> A) {
   int b[1200], vis[1200], x = 0;
   int n = A.size();
   for (int i = n - 1; i >= 0; i--) {
      if (!vis[A[i]]) {
         b[x] = A[i];
         x++;
         vis[A[i]] = 1;
      }
   }
   for (int i = x - 1; i >= 0; i--)
      cout << b[i] << ", ";
}
int main() {
   vector<int> A = { 1, 5, 5, 1, 6, 1 };
   solve(A);
}

입력

{ 1, 5, 5, 1, 6, 1 }

출력

5, 6, 1,