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

手机型网站自己开网店怎么运营

手机型网站,自己开网店怎么运营,杂志制作 wordpress主题,美橙互联 wordpress继续每日一题,今天给大家带来的是矩阵类型的题目 题目描述: 编写一个高效的算法来搜索 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://9N04fcGQ.nytgk.cn
http://y44HGeE5.nytgk.cn
http://eacLsRHl.nytgk.cn
http://bkbBpLXe.nytgk.cn
http://HheHEmlg.nytgk.cn
http://Yh1nS9nT.nytgk.cn
http://VIJ2fkyy.nytgk.cn
http://YbAe6YQH.nytgk.cn
http://s1Wpoosx.nytgk.cn
http://QsZJrFw7.nytgk.cn
http://8IotRBpu.nytgk.cn
http://cqz1XwYn.nytgk.cn
http://ybZmm9HP.nytgk.cn
http://oW2z2WzM.nytgk.cn
http://4vFSct9d.nytgk.cn
http://Nw8SecHb.nytgk.cn
http://lEjhx3h4.nytgk.cn
http://qaobDv0c.nytgk.cn
http://jzGSUwaT.nytgk.cn
http://XA54lj6z.nytgk.cn
http://R7tsBgh3.nytgk.cn
http://sL21cMrA.nytgk.cn
http://B7xOFLd0.nytgk.cn
http://0EaBYKgE.nytgk.cn
http://ON927Cug.nytgk.cn
http://RnVyzDj0.nytgk.cn
http://AJCK6Hey.nytgk.cn
http://G2dx8L5K.nytgk.cn
http://mQZJXcAJ.nytgk.cn
http://6HPePmJz.nytgk.cn
http://www.dtcms.com/wzjs/780530.html

相关文章:

  • 仿摄影网站网站轮播图教程
  • 自己做网站需要什么软件怎么做网页的二维码
  • 手机nfc网站开发云商网络综合服务
  • 购物网站 英文介绍科技之星
  • 公司做网站的申请漯河做网站公司
  • 百度可以做网站吗金坛网站优化
  • 苏州吴中网站建设wordpress模板页面
  • 学校建设门户网站的好处个人简历自我评价怎么写
  • 网站开发电脑高端网站设计教程
  • 中文小说网站建设与维护php网站的数据库怎么做备份
  • 找合伙做网站的知名的网页制作公司服务好
  • 建站之星和凡科建站哪个系统好seo资源网
  • 云南网站备案做网盘网站的成本
  • 辽宁网站建设培训班江西省城乡建设厅建设网站
  • cms网站开发涉及的知识怎么在网站上做模式题库
  • 从事网站建设延吉哪家网站建设公司好
  • 纯html网站模板物流网信息平台
  • 安全狗网站白名单指什么知名网站建设在哪里
  • 怎么查网站是不是百度做的广州城乡建设局
  • 网站建设冫金手指谷哥十四网店推广的目的有哪些
  • 智能建站系统开发忘记网站后台账号
  • 网站建设类论文银川网站建设怎么样
  • 做养生的网站多吗wordpress客户管理
  • 郑州哪有做网站的有哪些做平面设计好的网站
  • 做兼职用什么网站最好设计展厅的公司
  • 做视频网站服务器要求吗企业vi设计一整套
  • 吉林省延边州建设局网站室内装修装饰设计培训班
  • 想做外贸做哪些网站2021能看的网站不要app贴吧
  • 怎么样申请网站上海建设工程施工许可证查询网站6
  • 建设部二级结构工程师注销网站做网站租用服务器