● 手写代码:二分查找的代码
参考回答:
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;elsereturn m;}
return -1;//没有找到对应的元素,返回-1.
}
● 一个二维座标系,给你n个点的座标,画一条直线把他们分成两份(任意直线),要求数量尽量等分,复杂度不能太高。
参考回答:
我下意识觉得考察我图论,想了一下感觉不是的,然后给他讲了讲我的思路:假设按照y座标分,那么遍历n个座标,用一个最大堆来保存,然后从顶部弹出n/2次,如果当前顶部的数和最后弹出的数不一样,就可以在中间画一条线)他说如果所有点纵座标都一样呢?如果有点重合的呢?(我有点蒙蔽了,觉得我这思路是错的,又想了几分钟其他的方法,又不由自主往图论上想,最后还是没想起来。其实貌似再同样做法对横座标处理一次应该可以避免他说的问题吧),最后问他怎么做,他说用二分的思想,然后对横纵座标求中位数、众数什么的。