[微软面试题]老题目挖出来

黄舒颖 咸丫蛋 2010-03-28 02:33:27
平面上N个点,没两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑)。时间效率越高越好。

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

有问题啊?
期待牛人。
...全文
160 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿色夹克衫 2010-03-29
  • 打赏
  • 举报
回复
应该没什么问题,就是这个结果。
  • 打赏
  • 举报
回复
嗯,突然想清楚了,是没有问题,呜呜
zyl072 2010-03-28
  • 打赏
  • 举报
回复
哦,对的。画了下,斜率最大的两个点,必然是X值相邻的两个点。
那就没错了
x642458 2010-03-28
  • 打赏
  • 举报
回复
算法没有错啊,你画图看下嘛

zyl072 2010-03-28
  • 打赏
  • 举报
回复
哦,不对不对,傻了,这个算法好像本身就不对。
我再好好想想
zyl072 2010-03-28
  • 打赏
  • 举报
回复
应该还要处理一下X相等的情况。
排序的时候,若X相等,则继续比较Y。

处理的时候,先合并一下X相等的所有点,同一个X只记录最小Y和最大Y 。(若只有一个点,则最小Y等于最大的Y)
然后始终用 x[i]的最小Y和 x[i+1]的最大Y进行运算
gnefuil 2010-03-28
  • 打赏
  • 举报
回复
好像没什么问题,怎么啦?

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧