Menu
CoddyTech

Next Greater Element I

Bạn nhận được hai mảng số nguyên phân biệt, nums1 và nums2, và mọi giá trị trong nums1 đều xuất hiện trong nums2. Phần tử lớn hơn tiếp theo của một giá trị x là giá trị đầu tiên nằm bên phải x trong nums2 và lớn hơn x, hoặc là -1 nếu không có giá trị nào như vậy.

Trả về một mảng chứa phần tử lớn hơn tiếp theo của mỗi giá trị trong nums1, theo thứ tự của nums1.

Hàm

nextGreaterElement(nums1: integer-array, nums2: integer-array) → integer-array
nums1integer-array
các giá trị cần tìm, tất cả đều có trong nums2
nums2integer-array
mảng mà bạn tìm kiếm ở bên phải mỗi giá trị
Trả vềinteger-array
phần tử lớn hơn tiếp theo của mỗi giá trị trong nums1, hoặc -1, theo thứ tự của nums1

Ràng buộc

  • 1 ≤ nums1.length ≤ nums2.length ≤ 104
  • 0 ≤ nums1[i], nums2[i] ≤ 104
  • Tất cả giá trị trong nums1 đều khác nhau, và tất cả giá trị trong nums2 đều khác nhau.
  • Mọi giá trị trong nums1 đều xuất hiện trong nums2.

Ví dụ

Đầu vào
nums1 = [3, 8, 1]nums2 = [1, 6, 3, 8, 2]
Đầu ra
[8, -1, 6]
Giải thích
Sau số 3 trong nums2 là 8 và 2, trong đó 8 là số lớn hơn đầu tiên. Chỉ có 2 đứng sau số 8, nên 8 nhận giá trị -1. Ngay sau số 1 là 6, vốn đã lớn hơn.
challenge icon

Câu hỏi mở rộng

Với mỗi vị trí trong nums2, bạn có thể trả về số bước sang phải để đến phần tử lớn hơn tiếp theo của nó chỉ với một lượt duyệt không?

Đặt lại code
def nextGreaterElement(nums1, nums2):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums1 = [3, 8, 1]
nums2 = [1, 6, 3, 8, 2]

Đầu ra mong đợi

[8, -1, 6]