首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

[微软面试题]老题目挖出来解决思路

2012-03-17 
[微软面试题]老题目挖出来平面上N个点,没两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜

[微软面试题]老题目挖出来
平面上N个点,没两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑)。时间效率越高越好。

这是一楼的拿分解法。
先把N个点按x排序。
斜率k最大值为max(斜率(point[i],point[i+1])) 0<=i<n-2。
复杂度Nlog(N)。

有问题啊?
期待牛人。

[解决办法]
好像没什么问题,怎么啦?
[解决办法]
应该还要处理一下X相等的情况。
排序的时候,若X相等,则继续比较Y。

处理的时候,先合并一下X相等的所有点,同一个X只记录最小Y和最大Y 。(若只有一个点,则最小Y等于最大的Y)
然后始终用 x[i]的最小Y和 x[i+1]的最大Y进行运算

[解决办法]
哦,不对不对,傻了,这个算法好像本身就不对。
我再好好想想
[解决办法]
算法没有错啊,你画图看下嘛


[解决办法]
哦,对的。画了下,斜率最大的两个点,必然是X值相邻的两个点。
那就没错了

热点排行