Em có dùng thêm 1 cách ạ, em dùng 1 cái mảng left đếm số phần tử phía trước i trong range[0, i-1] có giá trị bằng nums nhưng ở giữa ko có thằng nào lớn hơn nums hết.Em lưu 1 cái stack giảm dần, kèm số lượng, thêm 1 số rất lớn ở cuối dãy để chặn.
Mỗi lần nhét 1 số vào stack thì loại những thằng nhỏ hơn nó ra, mỗi lần loại như thế thì cập nhật kết quả.
Java:
int[] left = new int[n];
for (int i = 0; i < n; i++) {
left[i] = 1;
int j = i-1;
while (j >= 0 && nums[j] <= nums[i]) {
if (nums[j] == nums[i]) {
left[i] += left[j];
break;
}
j--;
}
}
Sửa lần cuối:



câu 3 dùng dijsktra mà éo ra khó chịu thế nhỉ, cày lc để làm OA th chứ contest xin thua 
