剑指offer 面试题3:二维数组中的查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


图中是m行n列,共m*n个元素的正方形。但是可能会存在数组长度不一致的情况。如下图:



解题思路:

1、暴力破解 (无需细说) 复杂度为O(m*n)

2、有序数组的思路。(多个有序数组查找)
k way merge 多个有序数组的合并
——常规 O(nk^2)

——最小 堆版本。维持一个大小为m的最 小堆,时间复杂度是O(n*mlgm)

堆排序可以认为是两个阶段。
(1)、构造有序堆阶段。 O(m) “heapify” phase 将数组放入堆顺序。
3 2 6 5 4 -> (_siftup_max(result, 1) )3 5 6 2 4 -> (siftup_max(result, 0)) 6 5 3 2 4

(2)、下沉排序阶段。“sortdown” phase 重复提取最大值和恢复堆顺序。 del O(lg m) 和 insert O(lg m)
总共m*n个数,所以最后是O(n*m lgm)



3、行列都是有序数组
从较大的有序的第一个元素开始比较。(左下、右上都可以)
以查找10为例子:复杂度为O(m+n)



代码网上很多。过两天初步看完剑指offer以后刷题的时候再分享。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值