কম্পিউটার

পাইথনে K সাবলিস্ট বাড়ানোর পরে সর্বনিম্ন মান সর্বাধিক করার প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা রয়েছে এবং দুটি মান, আকার এবং k। এখন ধরুন একটি অপারেশন আছে যেখানে আমরা দৈর্ঘ্যের আকারের একটি সংলগ্ন সাবলিস্ট নিই এবং প্রতিটি উপাদানকে এক করে বৃদ্ধি করি। আমরা এই অপারেশনটি k বার করতে পারি, আমাদের সংখ্যায় সম্ভাব্য সর্বনিম্ন মান খুঁজে বের করতে হবে।

সুতরাং, ইনপুট যদি nums =[2, 5, 2, 2, 7], সাইজ =3, k =2 এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমরা [2, 5, 2] বাড়াতে পারি। 3, 6, 3, 2, 7] এবং তারপর [3, 7, 4, 3, 7] পেতে [6, 3, 2] বৃদ্ধি করুন, সর্বনিম্ন হল 3

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

  • সম্ভব () একটি ফাংশন সংজ্ঞায়িত করুন। এটি লক্ষ্য গ্রহণ করবে
  • ইভেন্ট :=N আকারের একটি তালিকা, এবং 0 দিয়ে পূরণ করুন
  • চলবে :=0, s :=0
  • আমি 0 থেকে N রেঞ্জের জন্য, কর
    • s :=s + ঘটনা[i]
    • ডেল্টা :=টার্গেট -(A[i] + s)
    • যদি ডেল্টা> 0 হয়, তাহলে
      • মুভস :=মুভ + ডেল্টা
      • s :=s + ডেল্টা
      • যদি i + সাইজ
      • ইভেন্টস[i + সাইজ] :=ইভেন্ট[i + সাইজ] - ডেল্টা
  • সত্যি প্রত্যাবর্তন যখন সরে যায় <=K
  • মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন
  • N :=A এর আকার
  • বামে :=0, ডানে :=10^10
  • যখন বাম <ডানে, কর
    • মাঝে :=(বাম + ডান + 1) / 2
    • যদি সম্ভব (মধ্য), তারপর
      • বামে :=মধ্য
    • অন্যথায়,
      • ডান:=মধ্য - 1
  • বাম দিকে ফিরুন
  • আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    উদাহরণ

    class Solution:
       def solve(self, A, size, K):
          N = len(A)
       def possible(target):
          events = [0] * N
          moves = s = 0
          for i in range(N):
             s += events[i]
             delta = target - (A[i] + s)
             if delta > 0:
                moves += delta
                s += delta
                if i + size < N:
                   events[i + size] -= delta
                   return moves <= K
                   left, right = 0, 10 ** 10
                   while left < right:
                      mid = (left + right + 1)//2
                   if possible(mid):
                      left = mid
                   else:
                      right = mid - 1
          return left
    ob = Solution()
    nums = [2, 5, 2, 2, 7]
    size = 3
    k = 2
    print(ob.solve(nums, size, k))

    ইনপুট

    [2, 5, 2, 2, 7], 3, 2

    আউটপুট

    3

    1. পাইথনে সাব-ট্রির নোড মানের সমষ্টি থেকে ন্যূনতম মান বের করার প্রোগ্রাম

    2. পাইথনে ফেরিস হুইল থেকে লাভ সর্বাধিক করার জন্য প্রয়োজনীয় ন্যূনতম ঘূর্ণনগুলি খুঁজে বের করার জন্য প্রোগ্রাম

    3. পাইথন ব্যবহার করে একটি বালতিতে বলের মধ্যে ন্যূনতম বল সর্বাধিক করার প্রোগ্রাম

    4. পাইথনে মার্জ করার পরে ন্যূনতম সংখ্যার রঙগুলি খুঁজে বের করার প্রোগ্রামটি থাকে