ধরুন, বিভিন্ন উচ্চতার n সংখ্যক বাড়ি রয়েছে এবং একজন পার্কুর শিল্পী কিছু ইট এবং মইয়ের সাহায্যে এক বাড়ি থেকে অন্য বাড়িতে যেতে চান। বাড়ির উচ্চতা একটি অ্যারে হিসাবে আমাদের দেওয়া হয়. প্রতিটি ইট একটি একক দৈর্ঘ্য লম্বা এবং আমাদেরকে সেগুলির একটি মুষ্টিমেয় দেওয়া হয়। আমরা মই এবং ইট একবারই ব্যবহার করতে পারি। আমাদের খুঁজে বের করতে হবে সবচেয়ে দূরের বিল্ডিং যেখানে পার্কুর শিল্পী যেতে পারেন।
সুতরাং, যদি ইনপুট হয় উচ্চতা =[5, 8, 7, 6, 2, 3, 1, 4], ইট =3, মই =2, তাহলে আউটপুট হবে 7।
শিল্পী বিল্ডিং 0 থেকে শুরু.
3টি ইটের সাহায্যে সে বিল্ডিং 1-এ পৌঁছায়।
তিনি 2, 3, 4 বিল্ডিংয়ে ঝাঁপিয়ে পড়েন কারণ উত্তরসূরি ভবনগুলি পূর্বসূরিগুলির চেয়ে ছোট৷
সে বিল্ডিং 4 থেকে বিল্ডিং 5 এ যাওয়ার জন্য একটি মই ব্যবহার করে।
সে বিল্ডিং 5 থেকে বিল্ডিং 6 এ লাফ দেয় কারণ বিল্ডিং 6 ছোট।
বিল্ডিং 7-এ পৌঁছানোর জন্য তিনি শেষ মই ব্যবহার করেন।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
temp :=একটি নতুন গাদা
-
আমি রেঞ্জ 1 থেকে উচ্চতার আকারের জন্য, করুন
-
dist :=উচ্চতা[i] - উচ্চতা[i - 1]
-
যদি dist> 0 হয়, তাহলে
-
ইট :=ইট - dist
-
পুশ মান -dist হিপ টেম্পে
-
যদি ইট হয় <0, তাহলে
-
মই :=মই - 1
-
ইট :=ইট - হিপ টেম্প থেকে সরানো ক্ষুদ্রতম উপাদান
-
যদি ইট <0 বা মই <0, তাহলে
-
রিটার্ন i - 1
-
-
-
-
-
উচ্চতার রিটার্ন সাইজ - 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from heapq import heappush, heappop
def solve(heights, bricks, ladders):
temp = []
for i in range(1, len(heights)):
dist = heights[i] - heights[i - 1]
if dist > 0:
bricks -= dist
heappush(temp, -dist)
if bricks < 0:
ladders -= 1
bricks -= heappop(temp)
if bricks < 0 or ladders < 0:
return i - 1
return len(heights) - 1
print(solve([5, 8, 7, 6, 2, 3, 1, 4], 3, 2)) ইনপুট
[5, 8, 7, 6, 2, 3, 1, 4], 3, 2
আউটপুট
7