Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm chỉ số phần tử đỉnh cục bộ từ danh sách các số bằng Python

Giả sử chúng ta có một danh sách các số được gọi là num có độ dài ít nhất là 2. Chúng ta phải tìm chỉ số của mọi đỉnh trong danh sách. Danh sách được sắp xếp theo thứ tự tăng dần. Chỉ số i là đỉnh khi -

  • nums [i]> nums [i + 1] khi tôi =0

  • nums [i]> nums [i - 1] khi i =n - 1

  • nums [i - 1] nums [i + 1] else

Vì vậy, nếu đầu vào giống như nums =[5, 6, 7, 6, 9], thì đầu ra sẽ là [2, 4], vì phần tử ở chỉ số 2 là 7 lớn hơn hai phần tử lân cận và mục tại chỉ số 4 là 9, chỉ số này lớn hơn mục bên trái của nó.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=một danh sách mới

  • n:=kích thước của nums

  • nếu n giống 1 thì

    • trả lại ans

  • đối với mỗi chỉ mục i và số num trong nums, thực hiện

    • nếu tôi> 0 và tôi

      • nếu nums [i - 1] nums [i + 1], thì

        • chèn tôi vào cuối ans

      • nếu tôi giống 0, thì

        • nếu num> nums [i + 1], thì

          • chèn tôi vào cuối ans

      • nếu tôi giống với n - 1, thì

        • nếu num> nums [i - 1], thì

          • chèn tôi vào cuối ans

  • trả lại ans

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn

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))

Đầu vào

[5, 6, 7, 6, 9]

Đầu ra

[2, 4]