কম্পিউটার

C++ এ অন্তর্বর্তী তালিকা ছেদ


ধরুন আমাদের কাছে বদ্ধ ব্যবধানের দুটি তালিকা রয়েছে, এখানে প্রতিটি ব্যবধানের তালিকা জোড়াভাবে বিচ্ছিন্ন এবং সাজানো ক্রমে রয়েছে। আমরা এই দুটি ব্যবধান তালিকার ছেদ খুঁজে বের করতে পেরেছি।

আমরা জানি যে বদ্ধ ব্যবধান [a, b] কে <=b হিসাবে চিহ্নিত করা হয়। a <=x <=b সহ বাস্তব সংখ্যা x এর সেট। দুটি বদ্ধ ব্যবধানের ছেদ হল বাস্তব সংখ্যার একটি সেট যা হয় খালি, অথবা একটি বন্ধ ব্যবধান হিসাবে উপস্থাপন করা যেতে পারে।

সুতরাং যদি ইনপুট হয় A =[[0,2],[5,10],[13,23],[24,25]] এবং B =[[1,5],[8,12],[ 15,24],[25,27]], তাহলে আউটপুট হবে [[1,2],[5,5],[8,10],[15,23],[24,24],[25 ,25]]।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution(object):
   def intervalIntersection(self, A, B):
   result = []
   i,j = 0,0
   while i < len(A) and j < len(B):
      if self.intersect(A[i],B[j]):
         temp = [max(A[i][0],B[j][0]),min(A[i][1],B[j][1])]
         A[i][0]=temp[1]+1
         B[j][0] = temp[1]+1
         if A[i][0] > A[i][1] or A[i][1] <= temp[0]:
            i+=1
         if B[j][0]>B[j][1] or B[j][1] <= temp[0]:
            j+=1
         result.append(temp)
         continue
      if A[i][0]>B[j][1]:
         j+=1
      else:
         i+=1
   return result
   def intersect(self,a,b):
      if a[0]<=b[0] and a[1]>=b[0]:
         return True
      if b[0]<=a[0] and b[1] >=a[0]:
         return True
      return False
ob = Solution()
print(ob.intervalIntersection([[0,2],[5,10],[13,23],[24,25]],[[1,5],[8,12],[15,24],[25,27]]))

ইনপুট

[[0,2],[5,10],[13,23],[24,25]]
[[1,5],[8,12],[15,24],[25,27]]

আউটপুট

[[1, 2], [5, 5], [8, 10], [15, 23], [24, 24], [25, 25]]

  1. C++ এ একটি লিঙ্কযুক্ত তালিকা সমতল করা

  2. C++ এ পার্টিশন তালিকা

  3. C++ এ একটি তালিকায় অনুপস্থিত পারমুটেশন

  4. C++ এ স্ট্র্যান্ড সাজান