Danh sách

Tìm phần tử đỉnh trong mảng (Find Peak Element)

Trung bình
Tìm Kiếm & Sắp Xếp (Searching & Sorting) 1000ms 128MB

Một phần tử đỉnh là một phần tử có giá trị lớn hơn hẳn các phần tử đứng liền kề nó. Cho mảng nums, hãy tìm một phần tử đỉnh và trả về chỉ số của nó.

Mảng có thể chứa nhiều đỉnh, bạn chỉ cần trả về chỉ số của bất kỳ đỉnh nào.

Yêu cầu bắt buộc: Thuật toán chạy trong thời gian O(log n).

Ví dụ 1: nums = [1, 2, 3, 1] -> 2 (phần tử 3 tại index 2 là đỉnh)

Định Dạng Đầu Vào (Input)
Một dòng chứa mảng nums
Định Dạng Đầu Ra (Output)
Chỉ số của một phần tử đỉnh
Ràng Buộc (Constraints)
  • 1 <= nums.length <= 1000
Ví Dụ Kiểm Thử Mẫu
Ví dụ 1:
Input:
[1, 2, 3, 1]
Output:
2
Giải thích: Đỉnh 3 tại index 2
Gợi ý được sắp xếp theo cấp độ tiến dần. Hãy mở từng gợi ý khi bạn thực sự cần thêm định hướng.

Binary Search Lên Dốc O(log n)

Nếu nums[mid] < nums[mid + 1], ta đang ở sườn dốc đi lên nên chắc chắn có ít nhất 1 đỉnh ở nửa bên phải (left = mid + 1). Ngược lại đỉnh ở bên trái hoặc chính là mid (right = mid).

Vui lòng đăng nhập

Đăng nhập tài khoản học viên để xem lịch sử nộp bài của bạn.

Đăng nhập
Ctrl + Enter: Chạy thử
Dữ liệu đầu vào (Input):
[1, 2, 3, 1]
Kết quả kỳ vọng (Expected Output):
2
Nhập STDIN của bạn (Mỗi dòng một tham số):

Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.

Đang gửi mã và thực thi trên Sandbox Engine...
Nhấn Ctrl+Enter để chạy

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học