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,

更新於: 03-Mar-2022

122 次觀看

開始你的 職業

完成課程即可獲得認證

開始
廣告
© . All rights reserved.