给定一组间隔,找到具有最大交叉点数的间隔(不是特定交叉点的长度).因此,如果输入(1,6)(2,3)(4,11),则应返回(1,6).有人建议使用Interval Tree在O(nlogn)中完成这项工作,但是在阅读其wiki页面后我不明白如何构造和使用Interval Tree.我相信它可以通过做某种排序和扫描算法来完成.如果Interval树是唯一的选项,请教我如何构建/使用一个.谢谢.
我已经实现了一个工作功能.但它效率不高,因为它会在每次调用中复制一个新副本.我无法将其转换为仅使用a_start,a_end,b_start,b_end.我已经尝试了几种方法来转换它,但它们都没有适用于所有情况.我如何转换它,以便它接收数组a和b的开始和结束指针?我已经尝试了以下内容并修改了ki-1和kj-1,这样它只需要k,但是没有用.
int m = a_right-a_left, n=b_right-b_left;
int i = (a_left+a_right)/2;
or int i = (int)((m* (k-1)) / (m+n) );
Run Code Online (Sandbox Code Playgroud)
下面是我的工作代码,每次调用使用一个新的数组副本.
public static int kthSmallest(int[] a, int[] b, int k) {
if (a.length==0)
return b[k-1];
else if (b.length==0)
return a[k-1];
else if (b.length<a.length)
return kthSmallest(b, a, k);
// make sure i + j = k - 1
int m = a.length, n=b.length;
int i = (int)((double)m / (m+n) * (k-1)); // make sure i won't be out of bounds
int j …
Run Code Online (Sandbox Code Playgroud) 似乎mysql只提供四种索引,分别是primary,unique,key,fulltext和spatial.但我想知道如何声明那些不是唯一但经常被索引的列的索引?因为我的数据库服务器遇到了瓶颈,我想为经常索引的列创建索引.
任何帮助,将不胜感激.提前致谢.