leetcode74搜索二维矩阵

tsx81429  金牌会员 | 2024-6-24 05:34:25 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 523|帖子 523|积分 1569

题目

给你一个满足下述两条属性的 m x n 整数矩阵:


  • 每行中的整数从左到右按非严酷递增顺序分列。
  • 每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,假如 target 在矩阵中,返回 true ;否则,返回 false 。
示例

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

解析

这道题着实还是利用二分法,就相当于将所有的二维数组串起来(但并不是真的要有串起来实现的代码),比如上面的例子,target=3,有3行4列,m=3, n=4,则有:
x := matrix[mid/n][mid%n]
代码如下(左闭右开法):
  1. func searchMatrix(matrix [][]int, target int) bool {
  2.    m := len(matrix)
  3.    n := len(matrix[0])
  4.    left := 0
  5.    right := m * n
  6.    for left < right {
  7.            mid := left + (right-left)/2
  8.            x := matrix[mid/n][mid%n]
  9.            if x == target {
  10.                    return true
  11.            } else if x < target {
  12.                    left = mid + 1
  13.            } else {
  14.                    right = mid
  15.            }
  16.    }
  17.    return false
  18. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!

标签云

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