【发布时间】:2019-12-10 05:30:40
【问题描述】:
Q 查询在 N 个元素的数组 A 上执行。在每个查询中,选择一个索引 I 并执行以下操作。
for j = I + 1 to N:
if A[j] < A[I]:
A[j] = 0
处理完 Q 查询后数组 A 的样子。
1 <= N,Q <= 10^5
1 <= A <= 10^9
Test Case :
5 2 (N Q)
4 3 4 3 2
3 2 (Q queries)
solution : 4 3 4 0 0
3 1 (N Q)
3 2 1
2
solution : 3 2 1
提示是使用高级排序算法。
在第一个测试用例中:
第一次查询后的数组 {4, 3, 4, 3, 0}
第二次查询后的数组 {4, 3, 4, 0, 0}
我尝试了蛮力方法,遍历每个查询。想不出有效的方法。
【问题讨论】:
-
似乎查询的顺序不会影响结果,所以问题就变成了找到最有效的顺序。
-
你能分享一个问题的链接吗?
-
到目前为止你尝试/研究了什么?分享您的发现。
-
提示:前缀数组:)
-
@MrSmith42 我尝试了蛮力方法,无法提出有效的解决方案。
标签: java arrays algorithm data-structures