একটি তালিকা nums রকেটের আকার ও দিক নির্দেশ করে (ধনাত্মক = ডান, ঋণাত্মক = বাম)। সংঘর্ষে ছোটটি ধ্বংস হয়, সমান হলে দুটোই ধ্বংস। একই দিকে চললে সংঘর্ষ হয় না। সব সংঘর্ষের পর বাঁচা রকেটগুলো বের করুন।
উদাহরণ: nums = [3, 8, 5, -5] → আউটপুট [3, 8]।
সমাধানের ধাপগুলো:
- স্ট্যাক-সদৃশ লিস্ট
lsব্যবহার করুন। - প্রতিটি রকেট প্রক্রিয়া করুন: ধনাত্মক হলে যোগ করুন, ঋণাত্মক হলে সংঘর্ষ চেক করুন।
- সংঘর্ষ লজিক: আকার তুলনা করে বাঁচা রকেট রাখুন।
উদাহরণ
class Solution:
def solve(self, nums):
ls = [nums[0]]
for i in range(1, len(nums)):
if nums[i] >= 0:
ls.append(nums[i])
else:
ls.append(nums[i])
j = len(ls) - 2
while j >= 0 and ls[j] >= 0:
if abs(ls[-1]) > ls[j]:
ls.pop(j)
elif abs(ls[-1]) == ls[j]:
ls.pop(j)
ls.pop(-1)
break
else:
ls.pop(-1)
break
j -= 1
return ls
ob = Solution()
nums = [3, 8, 5, -5]
print(ob.solve(nums))
ইনপুট
[3, 8, 5, -5]
আউটপুট
[3, 8]