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

C++-এ ন্যূনতম সময় পার্থক্য


ধরুন আমাদের ২৪-ঘণ্টার ক্লক টাইম পয়েন্টের একটি তালিকা আছে "Hour:Minutes" ফরম্যাটে, আমাদের তালিকায় যেকোনো দুটি টাইম পয়েন্টের মధ్య ন্যূনতম মিনিট পার্থক্য বের করতে হবে। তাই যদি ইনপুট হয় [“12:30”,”15:17”], তবে এটি ১৬৭ ফেরত দেবে।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব −

  • ok নামে 24*60 + 1 আকারের একটি অ্যারে সংজ্ঞায়িত করুন, এবং প্রাথমিকভাবে সব false।
  • n := tp-এর আকার
  • i = 0 থেকে n – ১ পর্যন্ত
    • hr := সময় থেকে ঘণ্টা অংশ
    • min := স্ট্রিংয়ের মিনিট অংশ
    • time := hr * 60 + min
    • যদি ok[time] true হয়, তবে ০ ফেরত দিন, অন্যথায় ok[time] true সেট করুন।
  • last := ০, first := inf, ret := inf, prev := -inf
  • i = 0 থেকে 24*60 পর্যন্ত
    • যদি ok[i] true হয়, তবে
      • last := i, last-এর max
      • first := i এবং first-এর min
      • যদি prev -inf না হয়, তবে ret := ret এবং last – prev-এর min
      • prev := i
  • ret এবং 24*60+first-last-এর ন্যূনতম ফেরত দিন।

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন &mnus;

উদাহরণ

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int findMinDifference(vector<string>& tp) {       vector <bool> ok(24 * 60 + 1, false);       int n = tp.size();       for(int i = 0; i < n; i++){          int hr = stoi(tp[i].substr(0, 2));          int min = stoi(tp[i].substr(3, 2));          int time = hr * 60 + min;          if(ok[time]) return 0;          ok[time] = true;       }       int last = 0;       int first = INT_MAX;       int ret = INT_MAX;       int prev = INT_MIN;       for(int i = 0; i <= 24 * 60; i++){          if(ok[i]){             last = max(i, last);             first = min(i, first);             if(prev != INT_MIN) ret = min(ret, last - prev);             prev = i;          }       }       return min(ret, 24 * 60 + first - last);    } }; main(){    vector<string> v = {"12:30","15:17"};    Solution ob;    cout << (ob.findMinDifference(v)); }

ইনপুট

["12:30","15:17"]

আউটপুট

167

  1. C++ প্রোগ্রাম: nটি পূর্ণসংখ্যা জোড়া থেকে ন্যূনতম পার্থক্য মান বের করা

  2. C++-এ একটি দেওয়া ২D অ্যারেতে ন্যূনতম যোগফল সাবম্যাট্রিক্স (Minimum Sum Submatrix)

  3. C++-এ ট্রিতে সব আপেল কালেক্ট করতে ন্যূনতম সময়

  4. C++-এ জব শিডিউলের ন্যূনতম কঠিনতা (Minimum Difficulty of a Job Schedule)