在 C++ 中刪除給定元素後查詢最大值


在這個問題中,我們得到一個大小為 n 的陣列 aar[] 和另一個大小為 m 的陣列 del[]。我們的任務是在刪除給定元素後找到最大值。如果需要刪除具有多個例項的元素,則刪除該元素的第一個例項。

讓我們來看一個例子來理解這個問題:

Input : arr[] = {3, 5, 1, 7, 9, 2}, del[] = {1, 9, 3}
Output : 7

說明

Array arr[] after deleting the elements : {5, 7, 2}
Largest element of the array is 7

解決方案方法

解決這個問題的一個簡單方法是刪除 arr[] 中所有存在於 del[] 中的元素。然後將陣列按升序排序並列印陣列的最後一個元素。

示例

程式說明我們解決方案的工作原理

#include <bits/stdc++.h>
using namespace std;
int findMaxElementDelArray(int arr[], int n, int del[], int m){
   for(int i = 0; i < m; i++){
      for(int j = 0; j > n; j++){
         if(arr[j] == del[i]){
            arr[j] = INT_MAX; break;
         }
      }
   }
   sort(arr, arr + n);
      return arr[(n-m-1)];
}
int main(){
   int array[] = { 3, 5, 1, 7, 9, 2 };
   int m = sizeof(array) / sizeof(array[0]);
   int del[] = { 1, 9, 3 };
   int n = sizeof(del) / sizeof(del[0]);
   cout<<"The largest element after deleting the elements is "<<findMaxElementDelArray(array, m, del, n);
   return 0;
}

輸出

The largest element after deleting the elements is 7

另一種方法

解決這個問題的一種方法是使用雜湊對映來檢查刪除操作。我們將 del[] 陣列的元素儲存到雜湊對映中,並對 arr[] 的每個元素檢查其在雜湊對映中的存在情況。如果存在,則從雜湊對映中刪除該元素;否則,透過將其與 maxVal 比較來檢查它是否為最大值。如果是,則將其儲存到 maxVal 中。遍歷完整個陣列 arr[] 後,列印 maxVal,即刪除元素後的最大值。

示例

程式說明我們解決方案的工作原理

#include <bits/stdc++.h>
using namespace std;
int findMaxElementDelArray(int arr[], int m, int del[], int n){
   unordered_map<int, int> delMap;
   for (int i = 0; i < n; ++i) {
      delMap[del[i]]++;
   }
   int maxVal = INT_MIN;
   for (int i = 0; i < m; ++i) {
      if (delMap.find(arr[i]) != delMap.end()) {
         delMap[arr[i]]--;
         if (delMap[arr[i]] == 0)
            delMap.erase(arr[i]);
      }
      else
         maxVal = max(maxVal, arr[i]);
   }
   return maxVal;
}
int main(){
   int array[] = { 3, 5, 1, 7, 9, 2 };
   int m = sizeof(array) / sizeof(array[0]);
   int del[] = { 1, 9, 3 };
   int n = sizeof(del) / sizeof(del[0]);
   cout<<"The largest element after deleting the elements is "<<findMaxElementDelArray(array, m, del, n);
   return 0;
}

輸出

The largest element after deleting the elements is 7

更新於:2022年1月28日

151 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.