কম্পিউটার টিউটোরিয়াল

C++-এ সব সারিতে সবচেয়ে ছোট সাধারণ উপাদান খুঁজুন


ধরুন আমাদের একটি ম্যাট্রিক্স mat আছে যেখানে প্রতিটি সারি নন-ডিক্রিজিং ক্রমে সাজানো। আমাদের সব সারিতে সাধারণ সবচেয়ে ছোট উপাদানটি খুঁজে বের করতে হবে। যদি কোনো সাধারণ উপাদান না থাকে, তবে -1 রিটার্ন করুন। যেন ম্যাট্রিক্সটি নিম্নরূপ হয় -

12345
245810
357911
13579

আউটপুট হবে 5

সমাধান পদ্ধতি

  • একটি ম্যাপ m ডিফাইন করুন, n := ম্যাট্রিক্সের সারি সংখ্যা
  • যদি n 0 না হয়, তবে x = কলাম আকার, অন্যথায় 0
  • i = 0 থেকে n-1 পর্যন্ত লুপ চালান
    • j = 0 থেকে x-1 পর্যন্ত লুপ চালান
      • যদি m[mat[i, j]] + 1 = i + 1 হয়, তবে m[mat[i, j]] ১ বাড়ান
  • প্রতিটি কী-মান জোড়ার জন্য
    • যদি মান n হয়, তবে কীটি রিটার্ন করুন
  • -1 রিটার্ন করুন

উদাহরণ (C++)

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে -

#include <bits/stdc++.h> using namespace std; class Solution { public:    int smallestCommonElement(vector<vector<int>>& mat) {       map <int, int> m;       int n = mat.size();       int x = n ? mat[0].size() : 0;       for(int i = 0; i < n; i++){           for(int j = 0; j < x; j++){             if(m[mat[i][j]] + 1 == i + 1){                 m[mat[i][j]]++;             }           }       }       map <int, int> :: iterator it = m.begin();       while(it != m.end()){           if(it->second == n){             return it->first;           }           it++;       }       return -1;    } }; int main(){     vector<vector<int>> v = {{1,2,3,4,5},{2,4,5,8,10},{3,5,7,9,11},{1,3,5,7,9}};     Solution ob;     cout << (ob.smallestCommonElement(v)); }

ইনপুট

[[1,2,3,4,5],[2,4,5,8,10],[3,5,7,9,11],[1,3,5,7,9]]

আউটপুট

5

  1. সকল সাবসিকোয়েন্সের যোগফলের যোগফল (C++)

  2. সি++ প্রোগ্রাম: অ্যারেতে সর্বনিম্ন মানের ফ্রিকোয়েন্সি (Frequency) নির্ণয়

  3. সি++ প্রোগ্রাম: তিনটি দিয়ে থাকা কোয়ার্ডিনেট দিয়ে সমান্তরাল চতুর্ভুজ (Parallelogram)-এর সব সম্ভাব্য কোয়ার্ডিনেট খুঁজে বের করা

  4. C++ প্রোগ্রাম: অ্যারে পার্টিশনিং মেথড দিয়ে kth সবচেয়ে ছোট এলিমেন্ট বের করা