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

手机型网站扬州做网站需要多少钱

手机型网站,扬州做网站需要多少钱,网站建设了,个人做旅游网站继续每日一题,今天给大家带来的是矩阵类型的题目 题目描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 题目示例: …

继续每日一题,今天给大家带来的是矩阵类型的题目

题目描述:

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

题目示例:
在这里插入图片描述

在这里插入图片描述

对于所有矩阵类型的题目,基本都是从一个点开始,上下左右四个方向移动,来完成整个矩阵的遍历

本题较为特殊:是行列数值是有序的,像这种有序的矩阵,我们一般需要观察一下四个角,来判断从哪一个角开始,常见的方法是从右上角或左下角开始。

以右上角为例(row=0, col=cols-1):

  • 如果当前元素等于target,返回true。
  • 如果当前元素大于target,因为当前元素是该列最小的(从该列往下递增),那么当前元素所在列的下方都会比当前元素大,所以我们可以将搜索范围向左移动一列(col–)。
  • 如果当前元素小于target,因为当前元素是该行最大的(从该行往左递减),那么当前元素所在行的左边都会比当前元素小,所以我们可以将搜索范围向下移动一行(row++)。
  • 直到找到target或者搜索完整个矩阵(row超出最后一行或者col小于0)。

这个方法的时间复杂度是O(m+n),因为每次移动一行或一列。

以case1的矩阵为例,假如我们要找的值是:23
在这里插入图片描述

我们从右上角开始:

  • row=0,col=4,对应元素=15<23,向下移动行
  • row=1,col=4,对应元素=19<23,向下移动行
  • row=2,col=4,对应元素=22<23,向下移动行
  • row=3,col=4,对应元素=24>23,此时找到了对应的行,开始向左移动列
  • row=3,col=3,对应元素=16<23,此时也找到了对应的列,继续向下移动行
  • row=4,col=3,对应元素=17<23,向下移动行
  • row=5,col=3,对应元素=26>23,此时找到了对应的行,开始向左移动列
  • row=5,col=2,对应元素=23=23,找到了对应的元素

所以整个过程就是:向下移动行直到找到对应的行,在向左移动列,然后重复该过程

核心代码如下:

        int row = 0, col = cols - 1;while (row < rows && col >= 0) {while (row < rows) {//向下移动行int val = matrix[row][col];if (val == target) {return true;} else if (val < target) {row++;} else {break;}}//所有元素均要比当前元素小if (row >= rows) {return false;}//向左移动列while (col >= 0) {int val = matrix[row][col];if (val == target) {return true;} else if (val > target) {col--;} else {break;}}}

完整实现:

    public static boolean searchMatrix(int[][] matrix, int target) {int rows = matrix.length;int cols = matrix[0].length;//先确定从哪一行开始找int row = 0, col = cols - 1;while (row < rows && col >= 0) {while (row < rows) {int val = matrix[row][col];if (val == target) {return true;} else if (val < target) {row++;} else {break;}}//所有元素均要比当前元素小if (row >= rows) {return false;}//移动列while (col >= 0) {int val = matrix[row][col];if (val == target) {return true;} else if (val > target) {col--;} else {break;}}}return false;}

耗时:
在这里插入图片描述

但是针对每一行或者每一列均是有序的,可以看到我们上面的过程是每次均只在固定的行和固定的列在移动,所以每次在确定行或者列的时候我们可以利用二分法来提高检索速度

   public static boolean searchMatrix2(int[][] matrix, int target) {int rows = matrix.length;int cols = matrix[0].length;//先确定从哪一行开始找int row = 0, col = cols - 1;while (row < rows && col >= 0) {int top = row, bottom = rows - 1;while (top <= bottom) {int mid = (top + bottom) / 2;int val = matrix[mid][col];if (val == target) {return true;} else if (val < target) {top = mid + 1;} else {bottom = mid - 1;}}row = top;//所有元素均要比当前元素小if (row >= rows) {return false;}//移动列int left = 0, right = col - 1;while (left <= right) {int mid = (left + right) / 2;int val = matrix[row][mid];if (val == target) {return true;} else if (val < target) {left = mid + 1;} else {right = mid - 1;}}col = right;}return false;}

在这里插入图片描述


文章转载自:

http://SyhV9T2j.ffptd.cn
http://0qetYi0X.ffptd.cn
http://92uplZiM.ffptd.cn
http://300sYEtt.ffptd.cn
http://c5uvQueb.ffptd.cn
http://bHLnrG25.ffptd.cn
http://4U4yIFfI.ffptd.cn
http://f7RRmcrW.ffptd.cn
http://fhefh0HV.ffptd.cn
http://HN6Pjejb.ffptd.cn
http://KTkwzX6p.ffptd.cn
http://OxHzF9rA.ffptd.cn
http://65ILLy8u.ffptd.cn
http://reFpIROK.ffptd.cn
http://CTnQQpEZ.ffptd.cn
http://xoRktNNo.ffptd.cn
http://rXlgW98C.ffptd.cn
http://Y090q9Sy.ffptd.cn
http://HQHMboly.ffptd.cn
http://YANJLYlr.ffptd.cn
http://PLnbTWHt.ffptd.cn
http://DS3GPQcs.ffptd.cn
http://SNxLye6C.ffptd.cn
http://VyUHw0s9.ffptd.cn
http://xKJlbPyi.ffptd.cn
http://hRTZ3QNc.ffptd.cn
http://71MEAQZG.ffptd.cn
http://aRV7IGHh.ffptd.cn
http://ExxfPafR.ffptd.cn
http://MKdZqzR1.ffptd.cn
http://www.dtcms.com/wzjs/751480.html

相关文章:

  • 百度网站建设优化在线生成多款表白网站是怎么做的
  • 免费网站建设程序下载济宁建网站公司
  • 牛仔网站的建设风格wordpress 设置语言
  • 网站下载免费新版杭州建设厅官方网站
  • 长沙网站制作培训基地哈尔滨网站制作哪里专业
  • 技术支持 东莞网站建设 轴承境外网站搭建
  • 做网站图标的软件个人网站设计报告书
  • 烟台优化网站公司南京网络推广外包
  • 做网站怎么提取视频无广告国产在线免费观看高甜电影推荐
  • 做室内装修的网站企业门户网站免费模板
  • 耐克官网网站设计大连云购物app下载安装到手机
  • 无锡朝阳网站建设深圳品牌做网站
  • 网站建设的例子南昌seo网站
  • 怎么成立个人网站WordPress邮箱内容修改
  • 二维码网站制作湖南还没有建网站的企业
  • 企业网站案例展示在哪个网站里下载的图片可以做展架
  • 网站优化体验报告wordpress能多人登录
  • 物流网站建设案例开发者模式有什么危害
  • 网站建设及推广文案网站论坛建设步骤
  • 江苏中淮建设集团有限公司网站住房和城乡建设管理局
  • 购销网站建设视频百度云asp室内装修装潢网站源码
  • 响应式做的比较好的网站2023小规模企业所得税税率是多少
  • 网站制作营销型公司建网站多
  • 检察 门户网站建设网站规划要点
  • 房产销售网站设计三只松鼠搜索引擎营销案例
  • 用什么开发手机网站虾皮购物网站怎么做
  • cms企业网站管理系统化工网站关键词优化
  • 项目信息网站哪个好微信企业邮箱怎么注册
  • 青浦网站建设公司东莞厚街职业技术学校
  • 网站后台页面是什么郑州地方网络推广网站