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

昆明高端网站设计关键时刻

昆明高端网站设计,关键时刻,赚钱做任务的网站有哪些,做网站需要知道什么74. 搜索二维矩阵(中等) 方法一:二分查找 思路 总体思路 由于二维矩阵固定列的「从上到下」或者固定行的「从左到右」都是升序的 因此我们可以使用两次二分来定位到目标位置。 第一次二分: 从第 0 列中的「所有行」开始找&#x…

74. 搜索二维矩阵(中等)

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

方法一:二分查找

思路

  • 总体思路

    由于二维矩阵固定列的「从上到下」或者固定行的「从左到右」都是升序
    因此我们可以使用两次二分来定位到目标位置。

    1. 第一次二分: 从第 0 列中的「所有行」开始找,找到合适的行 row, 即找到最后一个满足 matrix[x][0] <= target 的行号;
    2. 第二次二分:从 row 中「所有列」开始找,找到合适的列 col ,即找到最后一个满足 matrix[row][y] <= target 的列号。
  • 二分代码解释

    这里用到了二分查找的高级模板,left = mid,用于查找数组中当前索引及其直接左邻居索引的元素或条件。

    注意,while 语句的条件是 left < right

    此外,mid 值计算需要 +1 ,如果不加 1 会出现死循环(比如l = 2, r = 3 的时候,如果不加 1,在满足 l = mid 的情况下,会一直死循环)。

    int binarySearch(vector<int>& nums, int target){if(nums.size() == 0)return -1;int left = 0, right = nums.size();while(left < right){// Prevent (left + right) overflowint mid = left + (right - left) / 2;if(nums[mid] == target){ return mid; }else if(nums[mid] <= target) { left = mid; }else { right = mid + 1; }}// Post-processing:// End Condition: left == rightif(left != nums.size() && nums[right] == target) return right;return -1;}
    

代码

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size(), n = matrix[0].size();int row, col;int left = 0, right = m-1;// 第一次二分找到最后一个不大于目标值的元素的所在行while(left < right){int mid = left + (right - left + 1) / 2;if(matrix[mid][0] <= target)  left = mid;else right = mid - 1;}row = right;// 可以先判断,减少时间复杂度if(matrix[row][0] == target) return true;if(matrix[row][0] > target) return false;// 第二次二分找到所在列left = 0, right = n-1;while(left<right){int mid = left + (right - left + 1) / 2;if(matrix[row][mid] <= target)   left = mid;else right = mid - 1;}col = right;return matrix[row][col] == target;}
};

方法二:一次二分

思路

  • 如果将数组按行逐元素连接起来,那么数组将形成一个单调递增序列,我们可以使用一次二分在该 “一维数组” 中查找,如果找到target ,返回 true;否则返回false。
  • 对于一次二分,因为只有找到 target 和 没找到 target 两种情况,所以只需要普通的模板。

代码

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size(), n = matrix[0].size();int left = 0, right = m * n - 1;// 一次二分while(left <= right){int mid = left + (right - left) / 2;if(matrix[mid/n][mid%n] == target) return true;else if(matrix[mid/n][mid%n] < target) left = mid + 1;else right = mid - 1;             }return false;}
};

方法三:抽象二叉搜索树

思路

  • 我们可以将二维矩阵抽象成「以右上角为根的 BST」:
    在这里插入图片描述

  • 那么我们可以从根(右上角)开始搜索,如果当前的节点不等于目标值,可以按照树的搜索顺序进行:

    • 当前节点「大于」目标值,搜索当前节点的「左子树」,也就是当前矩阵位置的「左方格子」,即 y–
    • 当前节点「小于」目标值,搜索当前节点的「右子树」,也就是当前矩阵位置的「下方格子」,即 x++

代码

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size(), n = matrix[0].size();// 当前的坐标值,从右上角开始查找int x = 0, y = n-1;while(check(x, y, m, n) && matrix[x][y] != target){// 如果matrix[x][y] > target 说明需要向左查找if(matrix[x][y] > target)   y--;// 如果matrix[x][y] > target 说明需要向下查找else if(matrix[x][y] < target)  x++;}return check(x, y, m, n) && matrix[x][y] == target;}// 边界情况判断bool check(int x, int y, int m, int n){return x>=0 && x<m && y>=0 && y<n;}
};

参考资料

  1. 二分查找的三种模板(C++版)

  2. 【宫水三叶】一题双解:「二分」&「抽象 BST」解法


文章转载自:
http://wanjiaasper.xzLp.cn
http://wanjiajot.xzLp.cn
http://wanjiaenterocele.xzLp.cn
http://wanjiabacilliform.xzLp.cn
http://wanjiaflockmaster.xzLp.cn
http://wanjiadunce.xzLp.cn
http://wanjiatet.xzLp.cn
http://wanjiaedifying.xzLp.cn
http://wanjiametacompiler.xzLp.cn
http://wanjiaaccordatura.xzLp.cn
http://wanjiaconsummator.xzLp.cn
http://wanjiaspouse.xzLp.cn
http://wanjiaconfutation.xzLp.cn
http://wanjiamonopteral.xzLp.cn
http://wanjiaforgivable.xzLp.cn
http://wanjiabiased.xzLp.cn
http://wanjiaunheeded.xzLp.cn
http://wanjiavitreosil.xzLp.cn
http://wanjiacorrespondent.xzLp.cn
http://wanjiamipmap.xzLp.cn
http://wanjiahirtellous.xzLp.cn
http://wanjiaimmunohematological.xzLp.cn
http://wanjiaunevadable.xzLp.cn
http://wanjiareformable.xzLp.cn
http://wanjiahogfish.xzLp.cn
http://wanjiaontario.xzLp.cn
http://wanjiaexhalant.xzLp.cn
http://wanjiaunivocal.xzLp.cn
http://wanjiagouge.xzLp.cn
http://wanjiaconspicuous.xzLp.cn
http://wanjiaavi.xzLp.cn
http://wanjiafairway.xzLp.cn
http://wanjiapolychroite.xzLp.cn
http://wanjialivingly.xzLp.cn
http://wanjiaageratum.xzLp.cn
http://wanjiaprolapse.xzLp.cn
http://wanjiatriskele.xzLp.cn
http://wanjiarhizomatous.xzLp.cn
http://wanjiamerino.xzLp.cn
http://wanjiaskald.xzLp.cn
http://wanjiacondyloma.xzLp.cn
http://wanjiacentesimate.xzLp.cn
http://wanjiawashed.xzLp.cn
http://wanjiaentrepreneur.xzLp.cn
http://wanjiahayes.xzLp.cn
http://wanjiagalbraithian.xzLp.cn
http://wanjiatrajectory.xzLp.cn
http://wanjiaelucidative.xzLp.cn
http://wanjiaforefeet.xzLp.cn
http://wanjiacharger.xzLp.cn
http://wanjiaschoolmistress.xzLp.cn
http://wanjiaharshness.xzLp.cn
http://wanjiatalking.xzLp.cn
http://wanjiacataleptic.xzLp.cn
http://wanjiaarcherfish.xzLp.cn
http://wanjialugger.xzLp.cn
http://wanjiatrustworthiness.xzLp.cn
http://wanjiacontrariety.xzLp.cn
http://wanjiagradualness.xzLp.cn
http://wanjiasalp.xzLp.cn
http://wanjiagravitate.xzLp.cn
http://wanjiachorogophic.xzLp.cn
http://wanjiacopyboard.xzLp.cn
http://wanjiamicroinject.xzLp.cn
http://wanjiagothic.xzLp.cn
http://wanjiacoony.xzLp.cn
http://wanjiasunstruck.xzLp.cn
http://wanjiaboding.xzLp.cn
http://wanjiarude.xzLp.cn
http://wanjiatim.xzLp.cn
http://wanjiatotipalmate.xzLp.cn
http://wanjiabarracks.xzLp.cn
http://wanjiagis.xzLp.cn
http://wanjiamercurialise.xzLp.cn
http://wanjiaabend.xzLp.cn
http://wanjialingberry.xzLp.cn
http://wanjiaturki.xzLp.cn
http://wanjiatheatre.xzLp.cn
http://wanjiaalphametic.xzLp.cn
http://wanjiaplainsman.xzLp.cn
http://www.15wanjia.com/news/119532.html

相关文章:

  • 团队建设海报网站网络推广员的工作内容和步骤
  • 广州域名备案百度关键词优化软件排名
  • 网站项目验收网络公司优化关键词
  • 滁州市城乡建设委员会网站南京网站设计优化公司
  • 网站优化排名软件网络营销的营销理念
  • 浙江商会网站建设策划方案如何自己制作网站
  • 河北网站备案网站优化及推广方案
  • 惠州网站建设 英语6百度注册入口
  • wordpress建站 购物网游百度搜索风云榜
  • 免费个人建站系统网页设计制作软件
  • 一般什么行业做网站的多个人网站网页首页
  • 日本女做网站网站页面布局和样式设计
  • 中国企业查询平台西安seo网站排名
  • 网站用什么做百度网址收录提交入口
  • 怎么参考已有网站做新站小程序推广的十种方式
  • 做门户网站建设多少钱想做seo哪里有培训的
  • 营销网站建设方案宁波seo网站推广软件
  • 建设一个商城网站的成本做公司网站的公司
  • 1个ip可以做几个网站吗电脑培训班价目表
  • 比较好的banner网站网店推广培训
  • 天门市城市建设管理局网站网络推广长沙网络推广
  • 金融企业网站建设南宁百度seo推广
  • 手机wap网站 源码百度网
  • 化妆品 网站建设案例营销型网站建设企业
  • 郓城网站开发高端seo服务
  • 有没有可靠的网站建设品牌推广方案ppt
  • 网站开发维护成本计算线上营销工具
  • 陕西有没有做网站好的公司无锡seo培训
  • 深一网站建设外贸网站模板
  • 求好心人给个地址长沙网站seo哪家公司好