Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

Bạn nhận được một danh sách số nguyên nums được sắp xếp theo thứ tự không giảm, nên một giá trị có thể xuất hiện nhiều lần, và một số nguyên target. Hãy trả về một danh sách gồm hai chỉ số, tính từ 0: vị trí đầu tiên và vị trí cuối cùng mà target xuất hiện. Nếu target không có trong danh sách, hãy trả về [-1, -1]. Hãy hướng đến độ phức tạp thời gian O(log n).

Hàm

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
danh sách số nguyên đã được sắp xếp, có thể có các giá trị lặp lại
targetinteger
giá trị cần tìm
Trả vềinteger-array
chỉ số đầu tiên và cuối cùng của target, hoặc [-1, -1] nếu không tìm thấy

Ràng buộc

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums được sắp xếp theo thứ tự không giảm.

Ví dụ

Đầu vào
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Đầu ra
[1, 3]
Giải thích
Ba số 5 nằm ở các chỉ số 1, 2 và 3, nên dãy bắt đầu ở chỉ số 1 và kết thúc ở chỉ số 3. Chỉ số 0 chứa số 3 và chỉ số 4 chứa số 8, nên dãy không thể kéo dài hơn.
challenge icon

Câu hỏi mở rộng

Nếu cùng một danh sách nhận hàng nghìn truy vấn với các mục tiêu khác nhau, liệu duyệt qua danh sách trước một lần có thể giúp mỗi truy vấn nhanh hơn O(log n) không?

Đặt lại code
def searchRange(nums, target):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

nums = [3, 5, 5, 5, 8, 9, 9, 12]
target = 5

Đầu ra mong đợi

[1, 3]