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

পাইথনে নম্বর লিস্ট থেকে লোকাল পিক এলিমেন্টের সূচক বের করার প্রোগ্রাম

একটি লিস্ট 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))

  1. ans := [], n := len(nums)
  2. যদি n == 1: রিটার্ন []
  3. প্রতিটি 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)
  4. 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]
  1. পাইথনে ১ থেকে N পর্যন্ত অনুপস্থিত সংখ্যাগুলো খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে লিস্ট থেকে ইনপুট স্ট্রিং-এর ক্লোজ ম্যাচ (Close Matches) খুঁজে বের করা

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

  4. পাইথনে লিস্ট থেকে ডুপ্লিকেট এলিমেন্ট সরানো