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

网站由哪些部分组成部分组成部分惠阳做网站

网站由哪些部分组成部分组成部分,惠阳做网站,WordPress电影资源分享下载站,wordpress百度小程序插件1. 题意 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ; 否则,…

1. 题意

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

  • 每行中的整数从左到右按非严格递增顺序排列。

  • 每行的第一个整数大于前一行的最后一个整数。

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

否则,返回 false 。

2. 题解

2.1 暴力

逐个判断即可;

时间复杂度O(mn)O(mn)O(mn)

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for (auto &M: matrix) {for (auto v: M) {if( v == target)return true;}}return false;}
};
2.2 逐行二分

由于一行的数是有序的,因此可以不用完全遍历。

而且二分查找target

时间复杂度O(mlog⁡n)O(m \log n)O(mlogn)

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();if (0 == m)return false;for (int i = 0;i < m; ++i) {auto it = lower_bound( matrix[i].begin(), matrix[i].end(), target);if ( it != matrix[i].end() && *it == target)return true;}return false;}
};
2.3 整体二分

由于rrr行的最后一个元素是小于r+1r+1r+1行的第一个元素。

我们可以将这个二维数组给看成一个有序的一维数组。

用下标kkk表示原来数组matrix[k/n][k%n]matrix[k/n][k \%n]matrix[k/n][k%n]这个元素,

[0,mn)[0,mn)[0,mn)这个新下标间进行二分。

时间复杂度O(log⁡mn)=O(log⁡m+log⁡n)O(\log mn) = O(\log m + \log n)O(logmn)=O(logm+logn)

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

我们可以二分查找最后一列,找到第一个不小于targettargettarget所在的行。

在对行进行二分,查找最终的targettargettarget值。

时间复杂度O(log⁡m+log⁡n)O(\log m + \log n)O(logm+logn)

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();if (0 == m)return false;int n = matrix[0].size();int l;int r;l = 0;r = m;// log mwhile ( l < r) {int mid = ((r - l) >> 1) + l;int v = matrix[mid][n - 1];if ( v == target)return true;if ( v > target)r = mid;elsel = mid + 1;}if ( r >= m )return false;int rows = r;//cout << rows << endl;l = 0;r = n;while ( l < r) {int mid = ((r - l) >> 1) + l;//cout << mid << ": " << matrix[rows][mid] << endl;int v = matrix[rows][mid];if ( v == target)return true;if ( v < target)l = mid + 1;else r = mid;}return false;}
};
2.5 二叉搜索树

这个想法来自三叶姐,宫水三叶。

把这样的二维数组想看成以右上角为根节点的二叉搜索树。

当前节点的左边节点必然小于当前节点,

当前节点的下边节点必然大于当前节点。

我们从根开始,如果当前节点大于target,就向左走;

如果当前节点小于target,就向下走。

重复上面的过程,直到超过边界或者找到target

时间复杂度O(m+n)O(m+n)O(m+n)
在这里插入图片描述

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();if (0 == m)return false;int n = matrix[0].size();int x = 0;int y = n - 1;while (x < m && y >= 0) {int v = matrix[x][y];if (v == target)return true;if ( v > target)y--;else x++;}return false;}
};

参考

三叶
leetcode

http://www.dtcms.com/a/525646.html

相关文章:

  • CICD(一)CI/CD概述及GitLab部署和一些Git命令
  • 网站编辑器图书馆网站建设汇报
  • Guacamole实现远程桌面+实时语音(VNC)
  • SpringBoot知识点总结
  • 怎么建立一个网站能够与讯飞云对话wordpress 示例页面 删除
  • “package.xml”和“CMakeLists.txt”配置
  • 电子元器件网站建设网站案例代码
  • 照片后期网站博客网站做啥好
  • Docker监控系统中添加NodeExporter
  • 2025,数字化转型浪潮中的技术新航标
  • 免费建网站视频教程建网站价格网
  • 海北公司网站建设价格低山西疾控最新通告今天
  • 给企业做网站多少钱韩都衣舍网站建设ppt
  • 叫外包公司做网站不肯给源代码的wordpress内容折叠
  • 深圳3d网站建设平面设计教程视频全集免费
  • 阿里巴巴做网站费用计入wordpress ftp连接不上
  • 网站架构建设网站模板 带手机端
  • 什么网站可做浏览器首页网站建设专业平台
  • 威海哪里做网站产品展示网站含后台网站模板下载
  • 模型转换和边缘计算中至关重要的概念:​​归一化​​ 和​​量化策略​​
  • 怎么把自己做的网站发布出去设计中国第一架飞机
  • 2025年江西省职业院校技能大赛“大数据应用开发“竞赛样题第二套
  • 做美团旅游网站多少钱移动互联网服务管理中心官网
  • 织梦网站密码网站怎么自己做优化
  • 怎么给新网站做推广企业网站设计与实现论文
  • 网站建设项目环境影响评价目录网络推广方案最新
  • 提供邯郸wap网站建设前端开发工程师怎么考
  • 自己基于golang写的MongoRest单文件的 RESTful API 网关,直接通过mongodb发布rest,crub聚合简单的很-于大爷工具集
  • 【机器学习】贝叶斯算法原理与应用
  • 企业网站规划与开发金戈枸橼酸西地那非片