Menu
CoddyTech

Stock Span Problem

Mỗi ngày, bạn nhận được giá đóng cửa của một cổ phiếu: prices[i] là giá vào ngày i. Khoảng thời gian của ngày i là số ngày liên tiếp, kết thúc vào ngày i và tính cả ngày đó, mà giá của những ngày này nhỏ hơn hoặc bằng prices[i].

Trả về khoảng thời gian của từng ngày, theo cùng thứ tự với prices. Mỗi khoảng thời gian ít nhất là 1, vì một ngày luôn tính cả chính nó.

Hàm

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
giá vào từng ngày, theo thứ tự
Trả vềinteger-array
khoảng thời gian của mỗi ngày, theo cùng thứ tự

Ràng buộc

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • Một ngày trước đó có cùng mức giá vẫn được tính vào khoảng thời gian này; chỉ mức giá cao hơn mới kết thúc khoảng thời gian đó.

Ví dụ

Đầu vào
prices = [31, 27, 14, 21, 30, 18, 40]
Đầu ra
[1, 1, 1, 2, 4, 1, 7]
Giải thích
Ngày 3 ở mức 21 nhìn lại 14 ngày trước và dừng ở ngày 27: khoảng cách 2. Ngày 4 ở mức 30 dừng ở ngày 31: khoảng cách 4. Ngày 6 ở mức 40 cao hơn mọi mức giá trước đó và bao quát cả 7 ngày.
challenge icon

Câu hỏi mở rộng

Giờ đây, giá được gửi đến lần lượt từng giá một, và bạn phải báo cáo từng khoảng ngay khi nhận được giá. Cách tiếp cận nào vẫn hoạt động, và nó giữ lại điều gì giữa các lần gọi?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

prices = [31, 27, 14, 21, 30, 18, 40]

Đầu ra mong đợi

[1, 1, 1, 2, 4, 1, 7]