Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาค่าที่น้อยที่สุดหลังจากลบองค์ประกอบที่กำหนดโดยใช้ C++


ในปัญหานี้ เราได้รับอาร์เรย์สองอาร์เรย์ arr[] และ del[] ภารกิจของเราคือ หาค่าที่น้อยที่สุดหลังจากลบองค์ประกอบที่กำหนด

เราจะลบค่าจากอาร์เรย์ arr[] ที่มีอยู่ใน del[] และจากนั้นพิมพ์ค่าที่น้อยที่สุดหลังจากการลบ

มาดูตัวอย่างเพื่อเข้าใจปัญหา

อินพุต

 arr[] = {2, 5, 6, 9, 1} del[] = {1, 5, 9}

เอาต์พุต

 2

วิธีการแก้ปัญหา

วิธีแก้ปัญหาแบบง่ายคือการใช้แฮชชิง เราจะแทรกค่าทั้งหมดของอาร์เรย์ del[] ลงในตารางแฮช จากนั้นเราจะเดินทางผ่านอาร์เรย์ arr[] และตรวจสอบว่าค่าในตารางแฮชหรือไม่ หากมีค่าน้อยกว่า minVal ถ้ามี ให้พิมพ์ minVal

ตัวอย่าง

โปรแกรมสาธิตการทำงานของวิธีแก้ปัญหาของเรา

 #include <bits/stdc++.h> using namespace std; int findSmallestVal(int arr[], int m, int del[], int n){    unordered_map<int, int> delVals;    for (int i = 0; i < n; ++i) {       delVals[del[i]]++;    }    int minVal = INT_MAX;    for (int i = 0; i < m; ++i) {    if (delVals.find(arr[i]) != delVals.end()) {       delVals[arr[i]]--;       if (delVals[arr[i]] == 0)          delVals.erase(arr[i]);       }       else          minVal = min(minVal, arr[i]);    }    return minVal; } int main(){    int array[] = { 5, 12, 33, 4, 56, 12, 20 };    int m = sizeof(array) / sizeof(array[0]);    int del[] = { 12, 4, 56, 5 };    int n = sizeof(del) / sizeof(del[0]);    cout<<"The smallest value after the deleting element is "<<findSmallestVal(array, m, del, n);    return 0; }

เอาต์พุต

The smallest value after the deleting element is 12