একটি নম্বর লিস্ট nums দেওয়া আছে। লিস্টটি কি স্ট্রিক্টলি ইনক্রিজিং → স্ট্রিক্টলি ডিক্রিজিং → ইনক্রিজিং... প্যাটার্ন ফলো করে? শুধু ইনক্রিজিং হলে ও ভ্যালিড।
ইনপুট উদাহরণ
nums = [2, 4, 8, 7, 5, 1, 5, 7, 2, 1]
আউটপুট: True
ব্যাখ্যা
- [2,4,8] → ইনক্রিজিং
- [7,5,1] → ডিক্রিজিং
- [5,7] → ইনক্রিজিং
- [2,1] → ডিক্রিজিং
পাইথন কোড
def solve(nums):
if nums[1] <= nums[0]:
return False
for i in range(len(nums)):
if i - 1 >= 0:
if nums[i] == nums[i - 1]:
return False
return True
# টেস্ট
print(solve([2, 4, 8, 7, 5, 1, 5, 7, 2, 1])) # True
⚠️ দ্রষ্টব্য
দেওয়া কোডটি অসম্পূর্ণ। এটি শুধু চেক করে যে কোনো দুটি এডজেসেন্ট এলিমেন্ট সমান নয় এবং প্রথম দুটি ইনক্রিজিং। আসল অল্টারনেটিং প্যাটার্ন চেক করার জন্য ডাইরেকশন ট্র্যাক করা লাগবে।
সঠিক অ্যালগরিদম
def solve(nums):
if len(nums) < 2:
return True
if nums[1] <= nums[0]:
return False
increasing = True
for i in range(2, len(nums)):
if nums[i] == nums[i-1]:
return False
if increasing:
if nums[i] < nums[i-1]:
increasing = False
else:
if nums[i] > nums[i-1]:
increasing = True
return True