ধরা যাক nums নামক একটি সংখ্যার লিস্ট দেওয়া আছে। আমাদের দৈর্ঘ্য ≥ ৩ এমন কনটিগিউঅস (সন্নিবিষ্ট) অ্যারিথমেটিক সিকোয়েন্সের সংখ্যা বের করতে হবে। অ্যারিথমেটিক সিকোয়েন্স বলতে সেটির প্রতিটি পরপর দুটি সংখ্যার পার্থক্য একই থাকে এমন সিকোয়েন্সকে বোঝায়।
উদাহরণ
ইনপুট: nums = [6, 8, 10, 12, 13, 14]
আউটপুট: 4
ব্যাখ্যা: অ্যারিথমেটিক সিকোয়েন্সগুলো: [6, 8, 10], [8, 10, 12], [6, 8, 10, 12], [12, 13, 14]
সমাধানের ধাপসমূহ
count := 0,ans := 0i = 2থেকেlen(nums)-1পর্যন্ত:- যদি
nums[i] - nums[i-1] == nums[i-1] - nums[i-2]হয়, তবেcount += 1 - অন্যথায়:
ans += (count * (count + 1)) // 2count := 0
- যদি
- যদি
count != 0হয়, তবেans += (count * (count + 1)) // 2 ansফেরত দিন
পাইথন ইমপ্লিমেন্টেশন
class Solution:
def solve(self, nums):
count = 0
ans = 0
for i in range(2, len(nums)):
if nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]:
count += 1
else:
ans += (count * (count + 1)) // 2
count = 0
if count:
ans += (count * (count + 1)) // 2
return ans
ob = Solution()
nums = [6, 8, 10, 12, 13, 14]
print(ob.solve(nums))
ইনপুট
[6, 8, 10, 12, 13, 14]
আউটপুট
4