কম্পিউটার টিউটোরিয়াল

পাইথনে লিস্ট থেকে কনটিগিউঅস অ্যারিথমেটিক সিকোয়েন্সের সংখ্যা বের করার প্রোগ্রাম

ধরা যাক nums নামক একটি সংখ্যার লিস্ট দেওয়া আছে। আমাদের দৈর্ঘ্য ≥ ৩ এমন কনটিগিউঅস (সন্নিবিষ্ট) অ্যারিথমেটিক সিকোয়েন্সের সংখ্যা বের করতে হবে। অ্যারিথমেটিক সিকোয়েন্স বলতে সেটির প্রতিটি পরপর দুটি সংখ্যার পার্থক্য একই থাকে এমন সিকোয়েন্সকে বোঝায়।

উদাহরণ

ইনপুট: nums = [6, 8, 10, 12, 13, 14]

আউটপুট: 4

ব্যাখ্যা: অ্যারিথমেটিক সিকোয়েন্সগুলো: [6, 8, 10], [8, 10, 12], [6, 8, 10, 12], [12, 13, 14]

সমাধানের ধাপসমূহ

  1. count := 0, ans := 0
  2. i = 2 থেকে len(nums)-1 পর্যন্ত:
    • যদি nums[i] - nums[i-1] == nums[i-1] - nums[i-2] হয়, তবে count += 1
    • অন্যথায়:
      • ans += (count * (count + 1)) // 2
      • count := 0
  3. যদি count != 0 হয়, তবে ans += (count * (count + 1)) // 2
  4. 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
  1. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

  2. পাইথন প্রোগ্রাম লিস্টে পজিটিভ ও নেগেটিভ সংখ্যা কাউন্ট করা

  3. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা

  4. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা