无序数组找中位数 数组中有一个数字出现次数超过数组长度一半,找出这个数字(用C语言解决)。要求时间复杂度尽量小?
浏览量:2214
时间:2021-03-11 21:21:57
作者:admin
数组中有一个数字出现次数超过数组长度一半,找出这个数字(用C语言解决)。要求时间复杂度尽量小?
找出数组中出现次数超过一半的数字。用这种方法可以理解为求一个数的中值。基于这种思想,最直观的方法是在排序后找到中间数,但最佳的时间复杂度是O(nlogn)。因此,用一个简单的方法来求解这两个变量,从第一个数开始,把第一个数记为result Initialize times=1,然后找到与结果相等的数rimes,否则times——当times=0时,将结果改为当前数,继续搜索
让我们使用改进的快速排序方法。每次我们看定标的选中数是在左半部分还是在右半部分,然后根据要求对其余的进行排序。例如,总共有10个数字。如果校准的第一个数字在第三位,您只需要取3右边的数字。中间带必须在右侧。理论期望值为O(n)。或者,如果使用桶排序方法,则排序复杂度为o(n),只需找到中间值即可。
怎么在O(N)时间内求一个无序数组的中位数?
税前2万英镑和税后2万英镑的差额不是很大。我们应该根据自己的情况来选择。如果你有一个家庭,你仍然不想换工作,花更多的时间和你的家人和孩子在一起。如果你没有家庭,你可以看到你的职位有多大的发展空间。你不能轻易地换工作,因为你还有4-5公里。大多数外包公司都是不稳定的,他们的项目特别差,这对你的发展有很大的不利。当这个外包公司生存不下去,或者你要转投其他公司,别人看到你在外包公司做的项目比较差,就没有资本让你谈工资了。
两个不同的公司,还取决于平台、背景。如果税前20K平台好于税后22K平台,建议不要跳槽。很多公司只是依靠平台背景来决定他们雇佣的人才。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。