Phỏng vấn top 150Dễ dàng

Tìm kiếm trong mảng được sắp xếp xoay

Hướng dẫn chi tiết và cách triển khai Python cho bài toán 'Tìm kiếm trong mảng được sắp xếp xoay'.

Tuyên bố vấn đề

Dễ dàng

Có một mảng số nguyên nums được sắp xếp theo thứ tự tăng dần (với các giá trị riêng biệt). Trước khi được chuyển đến hàm của bạn, nums có thể được xoay ở một chỉ mục trục không xác định k (1 <= k < nums.length) sao cho mảng kết quả là [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]].

Cho mảng nums sau khả năng xoay và số nguyên target, hãy trả về chỉ mục của target nếu nó nằm trong nums hoặc -1 nếu nó không nằm trong nums.

Bạn phải viết một thuật toán có độ phức tạp thời gian chạy O(log n).

Viết hàm search(nums: List[int], target: int) -> int.

Ràng buộc
  • 1 <= len(nums) <= 5000
  • -10^4 <= nums[i] <= 10^4
  • All values of nums are unique
  • nums is an ascending array that is possibly rotated
  • -10^4 <= target <= 10^4

Ví dụ

Example 1
Input
nums = [4, 5, 6, 7, 0, 1, 2], target = 0
Output
4
Explanation

0 is found at index 4.

Example 2
Input
nums = [4, 5, 6, 7, 0, 1, 2], target = 3
Output
-1
Explanation

3 is not in the array.

Example 3
Input
nums = [1], target = 0
Output
-1
Explanation

0 is not in the array.

Need a Hint?
Hãy cân nhắc việc sử dụng các cấu trúc dữ liệu dành riêng cho Tìm kiếm nhị phân như tập hợp hoặc vùng heap.
Edge Cases to Watch
  • Cấu trúc đầu vào trống
  • Đầu vào phần tử đơn
  • Giới hạn số lớn

Sẵn sàng để giải quyết?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Mở trong Trình chỉnh sửa
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.