查看: 8622|回复: 6
收起左侧

求杨氏矩阵第k大的值

|只看干货 |刷题
头像被屏蔽

分享帖子到朋友圈
wwwyhx | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

上一篇:火车售票问题
下一篇:Microsoft : 一个栈实现队列
头像被屏蔽
 楼主| wwwyhx 2011-6-11 12:00:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
 楼主| wwwyhx 2011-6-11 12:00:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

lambda2fei 2012-9-4 17:19:48 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (1)
 
 
0% (0)    👎
wwwyhx 发表于 2011-6-11 12:00
解答是直接在杨氏矩阵中找第k个数没有什么有效的办法,但是可以“间接”寻找。
给定任意一个数,有办法判断 ...

如果矩阵里的都是整数,就没问题,因为二分可以遍历所有范围内的整数,但如果是浮点数,就不行了。。会有精度问题的。
回复

使用道具 举报

our2008 2013-9-13 16:45:06 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (1)
 
 
0% (0)    👎
本帖最后由 our2008 于 2013-9-13 16:46 编辑
wwwyhx 发表于 2011-6-11 12:00
代码:
int GetOrder(int** pArr, int n, int m, int v);

这种方法,有一个bug。
1 2 3 4
3 4 5 6
K=3该程序返回的是2(应该是3)
改一下,lessthan表示小于nMid的元素个数,lessthanorequalto表示小于等于nMide的元素个数。
当lessthan==k时,和该方法一样继续搜索。
当lessthan < k && lessthanorequalto >=k时,nMid就是第K个元素
回复

使用道具 举报

richardzrc 2015-1-6 16:03:26 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (5)
 
 
0% (0)    👎
堆的解法 时间复杂度是 O(klogk) 吧  
回复

使用道具 举报

richardzrc 2015-1-6 16:04:22 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (5)
 
 
0% (0)    👎
如果 不用堆的话 这个 代码 复杂度 是多少
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

>
快速回复 返回顶部 返回列表