একটি লিস্ট nums (দৈর্ঘ্য ≥ ২) দেওয়া আছে। সব পিক ইন্ডেক্স বের করুন। পিকের ডেফিনিশন:
i=0:nums[0] > nums[1]i=n-1:nums[n-1] > nums[n-2]- অন্যথায়:
nums[i-1] < nums[i] > nums[i+1]
উদাহরণ
nums = [5, 6, 7, 6, 9] → আউটপুট: [2, 4]
ইন্ডেক্স ২: ৭ (দুইপাশের চেয়ে বড়), ইন্ডেক্স ৪: ৯ (বামের চেয়ে বড়)
এলগরিদম (O(n))
ans := [],n := len(nums)- যদি
n == 1: রিটার্ন[] - প্রতিটি
i, numএর জন্য:- যদি
0 < i < n-1এবংnums[i-1] < num > nums[i+1]:ans.append(i) - যদি
i == 0এবংnum > nums[1]:ans.append(i) - যদি
i == n-1এবংnum > nums[n-2]:ans.append(i)
- যদি
ansরিটার্ন করুন।
পাইথন কোড
def solve(nums):
ans = []
n = len(nums)
if n == 1:
return ans
for i, num in enumerate(nums):
if i > 0 and i < n - 1:
if nums[i-1] < num > nums[i+1]:
ans.append(i)
if i == 0:
if num > nums[i+1]:
ans.append(i)
if i == n - 1:
if num > nums[i-1]:
ans.append(i)
return ans
nums = [5, 6, 7, 6, 9]
print(solve(nums)) # আউটপুট: [2, 4]
ইনপুট / আউটপুট
[5, 6, 7, 6, 9] [2, 4]