Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาดัชนีองค์ประกอบพีคในพื้นที่จากรายการตัวเลขใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งมีความยาวอย่างน้อย 2 เราต้องหาดัชนีของทุกยอดในรายการ รายการจะเรียงลำดับจากน้อยไปมาก ดัชนี i เป็นจุดสูงสุดเมื่อ −

  • nums[i]> nums[i + 1] เมื่อ i =0

  • nums[i]> nums[i - 1] เมื่อ i =n - 1

  • nums[i - 1] nums[i + 1] อื่น ๆ

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5, 6, 7, 6, 9] ผลลัพธ์จะเป็น [2, 4] เนื่องจากองค์ประกอบที่ดัชนี 2 คือ 7 ซึ่งมากกว่าสองเพื่อนบ้าน และรายการที่ ดัชนี 4 คือ 9 ซึ่งมากกว่ารายการด้านซ้าย

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ans :=รายการใหม่

  • n :=ขนาดของ nums

  • ถ้า n เท่ากับ 1 แล้ว

    • กลับมาอีกครั้ง

  • สำหรับแต่ละดัชนี i และตัวเลข num เป็น nums ทำ

    • ถ้า i> 0 และฉัน

      • ถ้า nums[i - 1] nums[i + 1] แล้ว

        • ใส่ i ต่อท้าย ans

      • ถ้าฉันเหมือนกับ 0 แล้ว

        • ถ้า num> nums[i + 1] แล้ว

          • ใส่ i ต่อท้าย ans

      • ถ้าฉันเหมือนกับ n - 1 แล้ว

        • ถ้า num> nums[i - 1] แล้ว

          • ใส่ 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))

อินพุต

[5, 6, 7, 6, 9]

ผลลัพธ์

[2, 4]