Menu
CoddyTech

Find Minimum in Rotated Sorted Array

Một danh sách các số nguyên khác nhau được sắp xếp theo thứ tự tăng dần rồi xoay: một số phần tử, có thể bằng 0, được lấy từ đầu danh sách và chuyển ra cuối theo cùng thứ tự. Ví dụ, xoay [2, 5, 9, 11, 13, 15, 17] đi 3 vị trí sẽ thành [11, 13, 15, 17, 2, 5, 9]. Bạn được cung cấp danh sách đã xoay nums. Hãy trả về giá trị nhỏ nhất trong thời gian O(log n).

Hàm

findMin(nums: integer-array) → integer
numsinteger-array
danh sách các số nguyên phân biệt đã được xoay
Trả vềinteger
giá trị nhỏ nhất trong nums

Ràng buộc

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • Tất cả giá trị trong nums đều khác nhau.
  • nums là một danh sách tăng dần được xoay đi k vị trí, với 0 ≤ k < nums.length; k = 0 nghĩa là danh sách không bị xoay.

Ví dụ

Đầu vào
nums = [11, 13, 15, 17, 2, 5, 9]
Đầu ra
2
Giải thích
Các giá trị tăng lên 17 rồi giảm xuống 2. Vì 17 > 9, giá trị nhỏ nhất nằm bên phải chỉ số 3; sau đó, 5 ≤ 9 và 2 ≤ 5 đưa hi trở lại chỉ số 4, nơi có giá trị 2.
challenge icon

Câu hỏi mở rộng

Bạn có thể trả về giá trị nhỏ thứ k của nums trong thời gian O(log n) mà không sắp xếp mảng không?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums = [11, 13, 15, 17, 2, 5, 9]

Đầu ra mong đợi

2