【发布时间】:2020-04-07 12:22:22
【问题描述】:
蛮力方法是一次一个地删除每个数字,并检查结果数组是否已排序并维护此类排序数组的计数。这需要 O(n^2) 时间。
还有其他方法可以在小于 O(n^2) 的时间内找到计数吗?
注意:每次只删除一个元素后,只需要查找此类排序数组的计数。
例如:
输入:[1 2 3 4 5 4]
输出:2([1 2 3 4 4],[1 2 3 4 5])
输入:[1 2 3 4 2]
输出:1 ([1 2 3 4])
【问题讨论】:
-
数组中是否可以有两个递减对,并且答案大于 0? (递减对是数组中的两个相邻元素,其中较大的在前。)
-
您只需要查找违规元素,例如第一个示例中的最后一个元素。然后还要考虑之前索引处的元素。如果没有违规者,即所有内容都已排序,您可以选择任何一个元素。如果有多个,您可以开始分支以备将来使用。
标签: arrays algorithm sorting data-structures