মান লক্ষ্য করুন আমাদের কাছে টাওয়ারদের আকারের একটি তালিকা এবং একটি পজিটিভ মান k আছে। আমরা kটি টাওয়ার বেছে নিতে চাই এবং ব্রিক যোগ করে তাদের সবার আকার একই করতে চাই, কিন্তু যত কম ব্রিক ব্যবহার করা যায় তত ভালো। আমাদের কাজ হল kটি টাওয়ার বেছে নিয়ে তাদের একই আকারের করার জন্য ন্যূনতম ব্রিকের সংখ্যা বের করা।
উদাহরণস্বরূপ, যদি ইনপুট হয় heights = [4, 7, 31, 14, 40] এবং k = 3, তবে আউটপুট হবে 17, কারণ আমরা ৫, ৮, এবং ১৫ বেছে নিলে ১৭টি ব্রিক দরকার হবে একই আকারের করার জন্য। (নোট: উদাহরণে ইনপুট ও এক্সপ্লানেশনের মান মেলেনা, কিন্তু লজিক অনুযায়ী বুঝানো হয়েছে)
heightsতালিকাটি সর্ট করুন।ans := infinitys := 0- প্রতিটি ইনডেক্স
iএবং ভ্যালুxএর জন্যheights-এ:s := s + x- যদি
i >= kহয়, তবেs := s - heights[i-k] - যদি
i >= k-1হয়, তবেans := min(ans, x*k - s)
ansরিটার্ন করুন।
class Solution:
def solve(self, heights, k):
heights.sort()
ans = float("inf")
s = 0
for i, x in enumerate(heights):
s += x
if i >= k:
s -= heights[i - k]
if i >= k - 1:
ans = min(ans, x * k - s)
return ans
ob = Solution()
heights = [5, 8, 32, 15, 41]
k = 3
print(ob.solve(heights, k))
[5, 8, 32, 15, 41], 3
17