2维有序数组中查找一个数K的问题
来源:互联网 发布:软件设计师辅导书 编辑:程序博客网 时间:2024/05/07 15:37
问题描述:
在一个2维有序数组(N*N)中查找一个值为K。 其数组的描述如下图:
其中:行递增序列,列也是递增序列。
解决方案:
1:刚开始想到了败者树来查找,发现有点大才小用。并且时间效率也不是很高,败者树主要是来做多路归并或是未排序的数组的一个查找过程。这样的时间复杂度也得O(N*logN);
2:老老实实一行一行地2分查找也就O(N*logN);
3:仔细观察这个数组后,我们可以这样处理,先对a[i][i]数组进行2分查找,存在返回其位置,不存在返回其最近的比K小的位置POS。此时仅需对图中标红的一行一列进行2分查找即可。其时间复杂度为O(logN);
总结:
本来是个很简单的题,非得要开始去想到什么败者树干什么?简单的方法去完成即可。
- 2维有序数组中查找一个数K的问题
- 在一个旋转有序数组中,查找最小的数
- 查找一个数组中第k小的数
- 有序数组查找第一个比k大的数
- 查找一维有序浮点数组中相近的数
- 二分法在有序数组中查找一个数
- 03+在一个有序的二维数组中查找一个数
- 二分查找(有序数组中查找需要的数)
- related with 有序数组中第K小的数
- 两个有序数组中,寻找第K大的数
- 4 两个有序数组中第k小的数
- 循环有序数组查找一个数
- 二维有序数组查找一个数
- 查找有序数组中某个数首次出现的位置
- 查找一个数是否存在于一个数组中。该数组分两段有序,第一段的数都大于第二段的数。
- 查找两个有序数组的中位数和第K小的数
- 在一个两段有序的数组中查找
- 在有序递增数组中查找一个缺少的数字
- Android 推送通知指南
- JAVA编程思想第四版—第三章—习题与答案
- cdev_alloc与cdev_init区别
- Android开发网上的一些重要知识点
- C#文件路径操作总结
- 2维有序数组中查找一个数K的问题
- IBM董事长:商业发展史白骨累累 成功需壮士断腕
- AP PDF Password Recovery 3 注册算法
- 【C/C++】如何进行技术面试
- How to enable scanner on CN3 device
- ConcurrentLinkedQueue原理(下)
- JSP网站建设中常见的中文乱码问题-上传下载篇
- 东亚银行:BI超越“银行报表层”
- 单向链表的倒序 2011.11.04