কম্পিউটার

পাইথনের একটি সাজানো অ্যারেতে একটি সংখ্যা সংখ্যাগরিষ্ঠ উপাদান কিনা তা পরীক্ষা করুন


ধরুন আমাদের কাছে একটি অ্যারে আছে যাকে বলা হয়, nums এবং যেটি অ-হ্রাস না হওয়া ক্রমে সাজানো হয়েছে, এবং একটি সংখ্যা লক্ষ্য। লক্ষ্য একটি সংখ্যাগরিষ্ঠ উপাদান কিনা আমাদের খুঁজে বের করতে হবে. একটি অ্যারেতে একটি সংখ্যাগরিষ্ঠ উপাদান হল একটি উপাদান যা N/2 বারের বেশি দৈর্ঘ্যের একটি অ্যারেতে প্রদর্শিত হয়। তাই যদি অ্যারেটি − [2,4,5,5,5,5,5,6,6] এর মত হয়। এবং লক্ষ্য 5, তারপর আউটপুট সত্য।

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

  • দুটি সাহায্যকারী মডিউল থাকবে, নিম্ন() এবং উপরের()। এগুলো নিম্নরূপ।
  • লোয়ার() অ্যারে অ্যারে এবং টার্গেট দুটি আর্গুমেন্ট নেয়, সেটি হল −
  • নিম্ন :=0, উচ্চ :=arr এর দৈর্ঘ্য
  • যখন কম <উচ্চ −
    • মধ্য :=নিম্ন + (উচ্চ - নিম্ন)/2
    • যদি arr[mid] =টার্গেট, তাহলে high =mid, অন্যথায় low =mid + 1
  • উচ্চ রিটার্ন যখন arr[high] =লক্ষ্য, অন্যথায় -1
  • উপরের() দুটি আর্গুমেন্ট অ্যারে অ্যারে এবং টার্গেট নেয়, অর্থাৎ −
  • নিম্ন =0, উচ্চ =arr এর দৈর্ঘ্য
  • যখন কম <উচ্চ −
    • মধ্য =নিম্ন + (উচ্চ - নিম্ন)/2
    • যদি arr[mid] =টার্গেট, তারপর low =mid, অন্যথায় high =mid - 1
  • রিটার্ন কম হলে arr[low] =লক্ষ্য, অন্যথায় -1
  • প্রধান ফাংশন হবে −
  • এর মত
  • u :=upper(arr, target)
  • l :=low(arr, target)
  • সত্য ফেরত দিন, যখন u – l + 1> (সংখ্যার দৈর্ঘ্য) / 2 যদি u -1 না হয়, অন্যথায় মিথ্যা

উদাহরণ(পাইথন)

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

class Solution(object):
   def upper(self,n,target):
      low = 0
      high = len(n)-1
      while low<high:
         mid = low + (high - low + 1)//2
         if n[mid] == target:
            low = mid
         else:
            high = mid-1
      return low if n[low] == target else -1
   def lower(self,n,target):
      low = 0
      high = len(n)-1
      while low < high:
         mid = low + (high - low)//2
         if n[mid]== target:
            high = mid
         else :
            low = mid +1
      return high if n[high] == target else -1
   def isMajorityElement(self, nums, target):
      u = self.upper(nums,target)
      l = self.lower(nums,target)
      return u-l+1 >len(nums)/2 if u != -1 else False
ob1 = Solution()
print(ob1.isMajorityElement([2,4,5,5,5,5,5,6,6], 5))

ইনপুট

[2,4,5,5,5,5,5,6,6]
5

আউটপুট

true

  1. পাইথনে অনুপস্থিত নম্বর

  2. পাইথনে সাজানো অ্যারে মার্জ করুন

  3. প্রাইম নম্বর চেক করতে পাইথন প্রোগ্রাম

  4. আর্মস্ট্রং নম্বর চেক করতে পাইথন প্রোগ্রাম