leetcode74搜索二维矩阵

题目

给你一个满足下述两条属性的 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]

代码如下(左闭右开法):

go 复制代码
func searchMatrix(matrix [][]int, target int) bool {
   m := len(matrix)
   n := len(matrix[0])
   left := 0
   right := m * n
   for left < right {
   	mid := left + (right-left)/2
   	x := matrix[mid/n][mid%n]
   	if x == target {
   		return true
   	} else if x < target {
   		left = mid + 1
   	} else {
   		right = mid
   	}
   }
   return false
}
相关推荐
ghie909017 分钟前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab
恋爱绝缘体117 分钟前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wuk99817 分钟前
VSC优化算法MATLAB实现
开发语言·算法·matlab
Z1Jxxx1 小时前
加密算法加密算法
开发语言·c++·算法
乌萨奇也要立志学C++1 小时前
【洛谷】递归初阶 三道经典递归算法题(汉诺塔 / 占卜 DIY/FBI 树)详解
数据结构·c++·算法
vyuvyucd1 小时前
C++引用:高效编程的别名利器
算法
鱼跃鹰飞2 小时前
Leetcode1891:割绳子
数据结构·算法
️停云️2 小时前
【滑动窗口与双指针】不定长滑动窗口
c++·算法·leetcode·剪枝·哈希
码农小韩3 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法
wen__xvn3 小时前
第 34 场 蓝桥·算法入门赛·百校联赛
算法