当前位置: 首页 > news >正文

西安手机网站建设公司排名高端网站建设公司零零

西安手机网站建设公司排名,高端网站建设公司零零,如何选择网站制作公司,网站正在建设中源码给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…

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

  • 每行中的整数从左到右按非严格递增顺序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

public class Solution {public bool SearchMatrix(int[][] matrix, int target) {int m = matrix.Length, n = matrix[0].Length;int low = 0, high = m * n - 1;while(low <= high){int mid = low + (high - low) / 2;int row = mid / n , column = mid % n;if(matrix[row][column] == target)return true;else if(matrix[row][column] > target)high = mid -1;elselow = mid + 1;}return false;}
}

思路:m 行 n 列的矩阵可以转换成长度为 mn 的升序数组。矩阵中的每个位置可以和升序数组中的下标转换:

  • 当 0≤i<m 且 0≤j<n 时,矩阵的第 i 行第 j 列等价于升序数组的下标 i×n+j;

  • 当 0≤index<mn 时,升序数组的下标 index 等价于矩阵的第 ⌊nindex​⌋ 行第 index mod n 列。

为了判断矩阵中是否存在目标值,可以在矩阵转换成的升序数组中二分查找。

复杂度分析

代码

测试用例

测试结果

测试结果

全部题解

74. 搜索二维矩阵

Storm

Guardian

关注

242

2022.06.11

发布于 上海

数组

二分查找

矩阵

C

6+

解法

思路和算法

由于给定的矩阵满足每行升序排序,且每行的第一个整数大于前一行的最后一个整数,因此如果将矩阵的每一行拼接到前一行的末尾,可以得到一个升序数组,m 行 n 列的矩阵可以转换成长度为 mn 的升序数组。矩阵中的每个位置可以和升序数组中的下标转换:

  • 当 0≤i<m 且 0≤j<n 时,矩阵的第 i 行第 j 列等价于升序数组的下标 i×n+j;

  • 当 0≤index<mn 时,升序数组的下标 index 等价于矩阵的第 ⌊nindex​⌋ 行第 indexmodn 列。

为了判断矩阵中是否存在目标值,可以在矩阵转换成的升序数组中二分查找。

用 low 和 high 分别表示二分查找的下标范围的下界和上界,初始时 low=0,high=mn−1。每次查找时,取 mid 为 low 和 high 的平均数向下取整,计算下标 mid 对应的矩阵行下标和列下标,判断矩阵中的相应位置的数和目标值的大小关系,调整查找的下标范围。

  • 如果矩阵中相应位置的数等于 target,则找到目标值,返回 true。

  • 如果矩阵中相应位置的数大于 target,则如果目标值存在,其下标一定小于 mid,因此在下标范围 [low,mid−1] 中继续查找。

  • 如果矩阵中相应位置的数小于 target,则如果目标值存在,其下标一定大于 mid,因此在下标范围 [mid+1,high] 中继续查找。

如果查找的过程中出现 low>high,则目标值不存在,返回 false。

代码

class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length, n = matrix[0].length;int low = 0, high = m * n - 1;while (low <= high) {int mid = low + (high - low) / 2;int row = mid / n, column = mid % n;if (matrix[row][column] == target) {return true;} else if (matrix[row][column] > target) {high = mid - 1;} else {low = mid + 1;}}return false;}
}

复杂度分析

  • 时间复杂度:O(log(mn)),其中 m 和 n 分别是矩阵 matrix 的行数和列数。矩阵中的元素个数是 mn,二分查找的次数是 O(log(mn)),每次查找的时间是 O(1),时间复杂度是 O(log(mn))。

  • 空间复杂度:O(1)。

http://www.15wanjia.com/news/164012.html

相关文章:

  • 如何在godaddy空间做手机网站做推广网站需要商标吗
  • 网站建设的原因wordpress 建立数据库连接时出错 重启数据库
  • 韩国风格网站php源码为什么说做网站赚钱
  • 产品发布网站网站的分页做不好会影响主页
  • 免费学校网站模板html超市网站建设方案
  • 五合一网站做优化好用吗网站集群建设必要性
  • jsp ajax网站开发典型实例 pdfdw网站建设模板
  • 杭州网站公司设计网站定制的公司哪家好
  • 做网站一般按什么报价毕业生对于网站建设感受
  • 开发一个网站做公司内部用网站专栏怎么做漂亮
  • 重庆景点图片网站优化推广的方法
  • 营销方案 网站如何登录网站服务器
  • 建设工程安全备案网站装修设计软件哪个好用
  • 开发个微网站多少钱科技服务公司网站模版
  • 厦门企业网站开发南京设计网站
  • 北京珠宝网站建设莱芜网页定制
  • 做视频网站想用家庭网络宁波高端定制网站建设
  • 平面设计手绘网站中国企业公司网站建设
  • 学校网站建设方案论文旗舰店的网站怎么做
  • 广西网站建设证件查询医院网站制作公司
  • 杭州网站建设网页制作做一个网站需要到哪里做
  • 买的网站可做360广告联盟吗建立网站很重要的要素是什么
  • angular做的网站大全一条龙建设网站
  • 网站规范化建设使用net域名的大网站
  • 做美团团购网站wordpress数据插件
  • 集约化网站群建设情况asp网站后台模板
  • 佛山品牌网站设计制作怎么开网店淘宝
  • 什么网站做视频给钱手机网站代理
  • 怎么查那些人输入做网站网站策划报告怎么写
  • 哪些网站首页做的好小程序免费推广平台