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

广州开发网站建设seo岗位

广州开发网站建设,seo岗位,阿里云虚拟主机怎么建立网站,app制作免费给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 …

给你一个满足下述两条属性的 m x n 整数矩阵:
每行中的整数从左到右按非严格递增顺序排列。
每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

示例 1:
在这里插入图片描述
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:
在这里插入图片描述
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false

提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 100
− 10 4 -10^4 104 <= matrix[i][j], target <= 10 4 10^4 104


知识点:
数组、矩阵、二分查找、排除法


解1(非常暴力):
核心思想:定义辅助数组存储所有元素(因为每一行的第一个元素大于上一行的最后一个元素,因此可以这么操作),然后对这个辅助数组进行二分查找

时间复杂度: O ( m n ) O(mn) O(mn)
空间复杂度: O ( m n ) O(mn) O(mn)

class Solution {public boolean searchMatrix(int[][] matrix, int target) {//获取行数、列数int m = matrix.length;int n = matrix[0].length;//定义辅助数组,存储所有元素int[] nums = new int[m * n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {nums[i * n + j] = matrix[i][j];}}//定义二分查找的指针int low = 0;int high = m * n - 1;//只要两个指针不重合,就继续循环while (low <= high) {//获取中位数int mid = (low + high) / 2;//判断是否存在if (nums[mid] == target) {return true;} else if (nums[mid] > target) {high = mid - 1;} else {low = mid + 1;}}//未找到return false;}
}

解2(排除法):
核心思想:同 #240. 搜索二维矩阵Ⅱ

时间复杂度: O ( m + n ) O(m+n) O(m+n)
空间复杂度: O ( 1 ) O(1) O(1)。未使用辅助数组,仅使用int类型的辅助变量。

class Solution {public boolean searchMatrix(int[][] matrix, int target) {//获取行数、列数int m = matrix.length;int n = matrix[0].length;//从右上角开始找int i = 0;int j = n - 1;//只要还有元素,就继续循环while (i < m && j >= 0) {//找到元素,返回if (matrix[i][j] == target) {return true;}//若当前元素>target,则遍历前面一列else if (matrix[i][j] > target) {j--;}//否则,遍历下面一行else {i++;}}//此时表明不存在元素return false;}
}

解3(二分查找):
核心思想:在形式上将矩阵所有元素放在一个数组中(因为每一行的第一个元素大于上一行的最后一个元素,因此可以这么操作),在实际上通过matrix[i/n][i%n]获取mid在matrix中对应的元素,然后使用二分查找

时间复杂度: O ( l o g ( m n ) ) O(log (mn)) O(log(mn))
空间复杂度: O ( 1 ) O(1) O(1)。未使用辅助数组。

class Solution {public boolean searchMatrix(int[][] matrix, int target) {//获取行数、列数int m = matrix.length;int n = matrix[0].length;//定义二分查找的指针int low = 0;int high = m * n - 1;//只要两个指针不重合,就继续循环while (low <= high) {//获取中位数int mid = (low + high) / 2;//获取矩阵对应的mid元素int item = matrix[mid / n][mid % n];//判断是否存在if (item == target) {return true;} else if (item > target) {high = mid - 1;} else {low = mid + 1;}}//未找到return false;}
}

参考:
1、灵神题解

http://www.dtcms.com/wzjs/211681.html

相关文章:

  • wordpress会员文章兰州seo优化
  • 专业建设规划及实施方案seo网站的优化方案
  • 做cover用什么网站优化设计单元测试卷
  • 国产尺码和欧洲尺码表2023自己怎么做关键词优化
  • 永久免费网站赣州网站seo
  • 专业网站建设收费网站外链推广平台
  • 石家庄网站建设咨询权威解读当前经济热点问题
  • 骨干专业建设验收网站织梦seo排名优化教程
  • 做中东服装有什么网站谷歌seo 外贸建站
  • 网站logo织梦怎么做怎么推广一个平台
  • 检察院门户网站建设天津谷歌优化
  • 柳市网站优化成都调查事务所
  • 做独立网站需要软件吗新闻头条今日要闻国内新闻最新
  • 专业的网站开发服务上海优化排名网站
  • 电视网站后台管理系统漏洞自媒体平台哪个收益高
  • 设计制作一个企业类型网站搜狗关键词排名查询
  • 品牌企业网站建设公司免费发布推广的网站有哪些
  • 广州 海珠 建网站使用最佳搜索引擎优化工具
  • 新网站建设的感想seo优化诊断工具
  • 做视频网站多大服务器谷歌下载
  • 安徽建筑大学学工在线网站长沙网站定制公司
  • 酷站欣赏飓风seo刷排名软件
  • 宝塔自助建站系统源码seo优化方案案例
  • 青岛大学网站建设百度联盟是什么
  • 电脑怎样做幻灯片的网站精准营销的典型案例
  • wordpress评论推广白杨seo课程
  • 东莞做网站哪家公司好网站关键词优化推广
  • 什么网站做推广比较好谈谈对seo的理解
  • 网站管理方案如何在百度上添加自己的店铺
  • 怎么做自己的优惠券网站网站的优化公司