搜刮二维矩阵

[复制链接]
发表于 2025-12-19 13:22:01 | 显示全部楼层 |阅读模式
搜刮二维矩阵

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


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

  1. 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
  2. 输出:true
复制代码
示例 2:

  1. 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
  2. 输出:false
复制代码
题解:

​ 将矩阵的拼接成一个升序数组即可
  1. func searchMatrix(matrix [][]int, target int) bool {
  2.         m, n := len(matrix), len(matrix[0])
  3.         l, r := 0, m*n-1
  4.         for l <= r {
  5.                 // mid := (r-l)/2 + l
  6.         mid := (l + r) / 2
  7.                 x := matrix[mid/n][mid%n]
  8.                 if x < target {
  9.                         l = mid + 1
  10.                 } else if x > target {
  11.                         r = mid - 1
  12.                 } else {
  13.                         return true
  14.                 }
  15.         }
  16.         return false
  17. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

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

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表