首页 > 其他分享 >力扣74. 搜索二维矩阵

力扣74. 搜索二维矩阵

时间:2023-04-12 17:33:41浏览次数:29  
标签:right target int 矩阵 mid 力扣 74 left

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
 

示例 1:

 

 

 

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

示例 2:

 

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


使用二分查找法,先在第一列上进行一次二分查找,找到最后一个小于等于目标值的行号,再在该行上进行二分查找:
 1 bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target){
 2     int left = 0, right = matrixSize - 1;
 3     while (left <= right) {
 4         int mid = left + (right - left) / 2;
 5         if (matrix[mid][0] == target) return true;
 6         else if (matrix[mid][0] > target) right = mid - 1;
 7         else left = mid + 1;
 8     }
 9     int row = right;
10     if (row < 0) return false;
11     left = 0, right = matrixColSize[row] - 1;
12     while (left <= right) {
13         int mid = left + (right - left) / 2;
14         if (matrix[row][mid] == target) return true;
15         else if (matrix[row][mid] > target) right = mid - 1;
16         else left = mid + 1;
17     }
18     return false;
19 }

 

标签:right,target,int,矩阵,mid,力扣,74,left
From: https://www.cnblogs.com/wlxdaydayup/p/17310535.html

相关文章

  • 力扣 33. 搜索旋转排序数组
    整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]在下标3处经......
  • Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
    Mat矩阵点乘——A*BOpencv重载了运算符“*”,姑且称之为Mat矩阵“点乘”,其中一个重载声明为:CV_EXPORTSMatExproperator*(constMat&a,constMat&b);点乘说明:1. A*B是以数学运算中矩阵相乘的方式实现的,即Mat矩阵A和B被当做纯粹的矩阵做乘法运算,这就要求A的列数等 ......
  • 四元数()和矩阵的相互转换()
    如果一个模型绕着一个坐标轴旋转,那么求它绕着一个旋转轴旋转后的坐标,坐标系还是原来的坐标系。只是模型的坐标变了。参考:https://blog.csdn.net/weixin_44346103/article/details/119114598......
  • UVa 374 Big Mod (快速幂取模)
    374-BigModTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=310Calculateforlargevaluesof B, P,and M usinganefficientalgorithm.(That'sright,......
  • R语言中的matrix(矩阵),list(列表),data.frame(数据框)总结
    一、R语言中的矩阵matrix是一个二维的数组array,因此数组array的一些操作它也适用。①它与array相比,特有的是矩阵的一些运算,例如:求维度:dim(A)转置:t(A)求行列式:det(A)矩阵相乘:x%*%y对角运算:diag(A)求逆:solve(A,b)求特征值和特征向量:eigen(A)奇异值分解:svd(A)②在多维数组中,apply函数......
  • 力扣1113(MySQL)-报告的记录(简单)
    题目:动作表:Actions 此表没有主键,所以可能会有重复的行。action字段是ENUM类型的,包含:('view','like','reaction','comment','report','share')extra字段是可选的信息(可能为null),其中的信息例如有:1.报告理由(areasonforreport)2.反应类型(atypeo......
  • 力扣-数组-螺旋矩阵
     题目顺序59螺旋矩阵Ⅱ,解题思路1.按照num从小到大依次填充,遵循从左到右,从上到下,从右到左,从下到上的层循环顺序;2.层循环中要注意,每个部分保持相同的开闭原则,左闭右开或左开右闭防止混淆出错;3.每层循环的start是不同的;每层循环的每部分个数依次减少;4.注意n的奇偶,奇数单独对中......
  • 74、混合模式—滤色
    原图   把两张图片选择【滤色】就可以了如果想把点点更加的明显,那么就对点点的图片进行【色阶】处理,并对【色阶】右键添加【剪切蒙版】,让它只对点点图片有影响,然后调节,让黑的更黑,白的更白 ......
  • latex · markdown | 如何编写矩阵、大公式
    1\left[\begin{array}{c} a&b\\ c&d\end{array}\right]效果:\[\left[\begin{array}{c} a&b\\ c&d\end{array}\right]\]2\min_{T_t^{set}}J=\lim_{N\rarr\infin}E\bigg\{\sum_{t=0}^{N-1}\Deltat\cdotP_t(T_t^{s......
  • 力扣1112(MySQL)-每位学生的最高成绩(中等)
    题目:表:Enrollments(student_id,course_id)是该表的主键。问题编写一个SQL查询,查询每位学生获得的最高成绩和它所对应的科目,若科目成绩并列,取course_id最小的一门。查询结果需按student_id增序进行排序。示例Enrollments表:Result表: 建表语句:1CreatetableIf......