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]