从排序列表<整数>中,给定一个未排序的子组,找到该子组的最小值

时间:2019-04-26 09:36:16

标签: java algorithm time-complexity backend

我正在Java-11中设置新服务器,并希望从给定的排序列表中找到子组的最小值。

我想知道实现这一目标的最可行方法是什么。

例如: sortedList = {1,2,3,4,5,6,7,8,9,10,11,12,13}

未排序的子组= {13,6,3,12,2}

结果= 2。

编辑:sortedList本身就是值

重要说明:排序列表相对较小,大约在0到200个项目之间。 但是,每次加入服务器的用户均会多次执行此计算,因此必须对其进行优化。

我尝试过的背景:

n =排序后的列表大小

m =分组列表大小

1)创建一个空的整数列表sizeOf(m) 从排序列表中提取了所有子项的 索引 。 进入新列表O(m),进行最小搜索并找到结果O(m-1)。 时间复杂度= O(m)+ O(m-1)〜2 * O(m)

问题:这是最好的方法吗?

2)从排序列表中获取子分组项目的所有索引。将它们插入列表sizeOf(n)中。 [这意味着其中包含n-m个零+ m个整数的列表]。 O(1)用于创建一个空列表sizeOf(n) O(m)用于获取所有索引并将其插入到新列表中,

到目前为止,O(m)+ O(1)

现在我知道从左开始第一个不为零的数字是我排序后的列表值中的最小索引。

问题:有没有办法在不迭代n-m个零的情况下从左侧获取第一个数字?

注意:由于我现在回到n复杂度,因此我一直在质疑这种方法,m总是比n小很多。

总共O(m)+ O(1)+ O(n-m)〜O(m)+ O(n-m)〜O(n)

将列表解析为字符串并使用正则表达式比选项1昂贵得多。

显示一些代码: 我仍处于此问题的技术设计阶段,因此我认为上面给出的示例足够了

描述预期和实际结果: 我对该线程的预期结果是找到一种最快的方法来实现排序列表中未排序子分组列表的最小值的结果。

0 个答案:

没有答案