相关疑难解决方法(0)

编写一个程序,从10亿个数字的数组中找出100个最大的数字

我最近参加了一次采访,我被问到"编写一个程序,从10亿个数字中找出100个最大的数字."

我只能给出一个强力解决方案,即以O(nlogn)时间复杂度对数组进行排序并获取最后100个数字.

Arrays.sort(array);
Run Code Online (Sandbox Code Playgroud)

面试官正在寻找更好的时间复杂性,我尝试了其他一些解决方案但未能回答他.有更好的时间复杂度解决方案吗?

sorting algorithm

298
推荐指数
8
解决办法
6万
查看次数

数以百万计的3D点:如何找到最接近给定点的10个点?

3-d中的点由(x,y,z)定义.任何两个点(X,Y,Z)和(x,y,z)之间的距离d是d = Sqrt [(Xx)^ 2 +(Yy)^ 2 +(Zz)^ 2].现在文件中有一百万个条目,每个条目都是空间中的某个点,没有特定的顺序.给定任意点(a,b,c)找到最近的10个点.您将如何存储百万点以及如何从该数据结构中检索这10个点.

algorithm graphics graph

67
推荐指数
5
解决办法
3万
查看次数

在C++中从容器中选择k个最小元素的"最佳"(惯用)方法

我经常发现自己遇到这个问题:给定一个序列,找到k-最小的元素.问题并不那么难,但我正在寻找的是一种"习惯性"的方式来做到这一点既安全又很少错误)并且沟通意图很好.所以最终做的是对序列进行排序,然后取第一个k元素:

std::sort(container.begin(),container.end());
std::vector<T> k_smallest(container.begin(),container.begin() + k);
Run Code Online (Sandbox Code Playgroud)

在我看来这既安全又易于理解,但这里的复杂性是nlogn + k,而不仅仅是n.你们是如何做到这一点的,是否有一种自觉的方式(使用一些模糊的功能)可以提供最佳的复杂性而无需重新实现轮子

c++ algorithm stl stl-algorithm

6
推荐指数
2
解决办法
1385
查看次数

查找单位数值数组的N个最大元素的总和

可能重复:
从一亿个数字中检索前100个数字

我有一个数组,其中包含0到9之间的正数,(数字可以重复).我想找到N个最大元素的总和

For example array =  5 1 2 4 and N=2
ans = 5+4 = 9
Run Code Online (Sandbox Code Playgroud)

简单方法:排序数组并找到n个最大元素的总和.但我不想用它

algorithm

2
推荐指数
1
解决办法
4707
查看次数

标签 统计

algorithm ×4

c++ ×1

graph ×1

graphics ×1

sorting ×1

stl ×1

stl-algorithm ×1