算法与数据结构 查找

目录

 

● 手写代码:二分查找的代码

参考回答:

● 一个二维坐标系,给你n个点的坐标,画一条直线把他们分成两份(任意直线),要求数量尽量等分,复杂度不能太高。

参考回答:


● 手写代码:二分查找的代码

参考回答:

int binarySearch(vector<int> x,int t)

{

int mid,l=0;

int u = x.size()-1;

while(l<=u)

{

mid = l+(u-l)/2;

if(x[m]<t)

l=m+1;

else if(x[m]>t)

u=m-1;

else

return m;

}

return -1;//没有找到对应的元素,返回-1.

}

● 一个二维坐标系,给你n个点的坐标,画一条直线把他们分成两份(任意直线),要求数量尽量等分,复杂度不能太高。

参考回答:

我下意识觉得考察我图论,想了一下感觉不是的,然后给他讲了讲我的思路:假设按照y坐标分,那么遍历n个坐标,用一个最大堆来保存,然后从顶部弹出n/2次,如果当前顶部的数和最后弹出的数不一样,就可以在中间画一条线)他说如果所有点纵坐标都一样呢?如果有点重合的呢?(我有点蒙蔽了,觉得我这思路是错的,又想了几分钟其他的方法,又不由自主往图论上想,最后还是没想起来。其实貌似再同样做法对横坐标处理一次应该可以避免他说的问题吧),最后问他怎么做,他说用二分的思想,然后对横纵坐标求中位数、众数什么的。

猜你喜欢

转载自blog.csdn.net/u012369559/article/details/89511647