একটি সংখ্যার তালিকা nums দেওয়া আছে। তালিকাটিকে কিছু সাবলিস্টে ভাগ করে প্রতিটি সাবলিস্ট সর্ট করলে পুরো তালিকা সর্টেড হয়। সর্বোচ্চ কতটি সাবলিস্টে ভাগ করা যায় তা বের করতে হবে।
উদাহরণ: nums = [4, 3, 2, 1, 7, 5] হলে আউটপুট ২, কারণ [4,3,2,1] এবং [7,5] সর্ট করলে পুরো তালিকা সর্টেড হয়।
সমাধানের ধাপসমূহ
- count := 0, main_sum := 0, sorted_sum := 0
- nums এবং sorted(nums) একসাথে ইটারেট করুন
- প্রতিটি ধাপে main_sum += x, sorted_sum += y
- যদি main_sum == sorted_sum হয় তবে count বাড়ান
- count ফেরত দিন
উদাহরণ কোড
class Solution:
def solve(self, nums):
count = 0
main_sum = sorted_sum = 0
for x, y in zip(nums, sorted(nums)):
main_sum += x
sorted_sum += y
if main_sum == sorted_sum:
count += 1
return count
ob = Solution()
nums = [4, 3, 2, 1, 7, 5]
print(ob.solve(nums))
ইনপুট
[4, 3, 2, 1, 7, 5]
আউটপুট
2