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

贵阳网站建设托管物联网设计方案

贵阳网站建设托管,物联网设计方案,Wordpress动静态分离,会计培训班哪个机构比较好搜索二维矩阵 一、题目背景二、题目描述示例 1:示例 2:约束条件: 三、解题思路分析1. **错误思路回顾**2. **Z字形查找算法**算法步骤: 3. **算法优势** 四、代码实现代码说明: 五、测试用例测试用例 1:测试…

搜索二维矩阵

    • 一、题目背景
    • 二、题目描述
      • 示例 1:
      • 示例 2:
      • 约束条件:
    • 三、解题思路分析
      • 1. **错误思路回顾**
      • 2. **Z字形查找算法**
        • 算法步骤:
      • 3. **算法优势**
    • 四、代码实现
      • 代码说明:
    • 五、测试用例
      • 测试用例 1:
      • 测试用例 2:
      • 测试用例 3:
    • 六、总结

一、题目背景

在LeetCode上,有一道经典的二维矩阵搜索问题——“搜索二维矩阵 II”。题目要求在一个具有特定性质的二维矩阵中查找目标值。矩阵的每一行从左到右升序排列,每一列从上到下升序排列。我们需要设计一个高效的算法来判断目标值是否存在于矩阵中。

二、题目描述

给定一个二维矩阵matrix和一个目标值target,矩阵的行数为m,列数为n。矩阵满足以下性质:

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

我们需要判断目标值target是否存在于矩阵中。

示例 1:

输入:

matrix = [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]
]
target = 5

输出:true

示例 2:

输入:

matrix = [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]
]
target = 20

输出:false

约束条件:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 300
  • -10^9 <= matrix[i][j] <= 10^9
  • 每一行的所有元素从左到右升序排列
  • 每一列的所有元素从上到下升序排列
  • -10^9 <= target <= 10^9

三、解题思路分析

1. 错误思路回顾

在解题过程中,我们可能会尝试一些直观的思路,但这些方法往往效率低下或存在逻辑错误。例如,从矩阵的左上角开始逐行逐列搜索,或者在矩阵中随机选择一个起点进行搜索。这些方法的时间复杂度较高,无法满足题目对效率的要求。

2. Z字形查找算法

经过分析,我们发现一种高效的搜索方法——Z字形查找。这种方法利用了矩阵的有序性,从矩阵的右上角(或左下角)开始搜索,通过逐步调整搜索范围,快速定位目标值。

算法步骤:
  1. 初始化:从矩阵的右上角开始搜索,设当前坐标为(x, y),其中x = 0y = n - 1
  2. 搜索过程
    • 如果matrix[x][y] == target,说明找到了目标值,返回true
    • 如果matrix[x][y] > target,由于每一列是升序排列的,当前列的所有元素都大于目标值,因此将y减1,即向左移动。
    • 如果matrix[x][y] < target,由于每一行是升序排列的,当前行的所有元素都小于目标值,因此将x加1,即向下移动。
  3. 边界条件:如果搜索过程中超出矩阵的边界(x >= my < 0),说明目标值不存在,返回false

3. 算法优势

Z字形查找算法充分利用了矩阵的有序性,避免了不必要的搜索。其时间复杂度为O(m + n),其中m是矩阵的行数,n是矩阵的列数。相比暴力搜索(时间复杂度为O(m * n)),这种方法效率显著提高。

四、代码实现

以下是基于Z字形查找算法的C语言实现:

bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int m = matrixSize;       // 矩阵的行数int n = *matrixColSize;   // 矩阵的列数int x = 0, y = n - 1;     // 从右上角开始搜索while (x < m && y >= 0) { // 确保搜索范围在矩阵内if (matrix[x][y] == target) { // 找到目标值return true;} else if (matrix[x][y] > target) { // 当前值大于目标值,向左移动y--;} else { // 当前值小于目标值,向下移动x++;}}return false; // 超出矩阵边界,目标值不存在
}

代码说明:

  1. 初始化x为0,y为矩阵的列数减1,即从右上角开始。
  2. 循环条件x < my >= 0,确保搜索范围在矩阵内。
  3. 搜索逻辑
    • 如果当前值等于目标值,直接返回true
    • 如果当前值大于目标值,向左移动(y--)。
    • 如果当前值小于目标值,向下移动(x++)。
  4. 返回结果:如果超出矩阵边界仍未找到目标值,返回false

五、测试用例

测试用例 1:

matrix = [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]
]
target = 5

输出true

测试用例 2:

matrix = [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]
]
target = 20

输出false

测试用例 3:

matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]
target = 7

输出true

六、总结

通过Z字形查找算法,我们能够高效地解决“搜索二维矩阵 II”问题。这种方法充分利用了矩阵的有序性,避免了暴力搜索的低效性。在实际应用中,我们还可以根据矩阵的性质选择其他优化策略,例如从左下角开始搜索,逻辑与从右上角类似。
这题本质上就是从右上角往右下角遍历,还是比较容易的。


文章转载自:

http://R8AKCURP.qkqhr.cn
http://uqjDibSm.qkqhr.cn
http://bpGFWmW0.qkqhr.cn
http://jZBMFphG.qkqhr.cn
http://DDWWwLM4.qkqhr.cn
http://X4uLmFI8.qkqhr.cn
http://W7aNpqIw.qkqhr.cn
http://YBqRiNVa.qkqhr.cn
http://iGTpHxKc.qkqhr.cn
http://BTsPf2Dk.qkqhr.cn
http://kITIHM6c.qkqhr.cn
http://CW82rycr.qkqhr.cn
http://2dE6h4qw.qkqhr.cn
http://4VcjUw7z.qkqhr.cn
http://sjTO5IBJ.qkqhr.cn
http://zLzpQnFr.qkqhr.cn
http://AxhtWBsA.qkqhr.cn
http://ltS4v0JZ.qkqhr.cn
http://LWgL5Hkf.qkqhr.cn
http://cYdBHL1a.qkqhr.cn
http://VlrWQhnC.qkqhr.cn
http://z5M6weyW.qkqhr.cn
http://YXYnLC91.qkqhr.cn
http://b0AEONDF.qkqhr.cn
http://1fI6OeIp.qkqhr.cn
http://k9OOnrdd.qkqhr.cn
http://HH6UkXLY.qkqhr.cn
http://Dr2NXTDD.qkqhr.cn
http://Lmx1MIPD.qkqhr.cn
http://SYhxB1I6.qkqhr.cn
http://www.dtcms.com/wzjs/763936.html

相关文章:

  • 宁陵视频网站建设贵阳网站seo
  • 做动画的网站有哪些QQ点钓鱼网站后怎么做
  • 四会建设局网站织梦设置中英文网站
  • 黄岐建网站网页设计基础知识点总结
  • 太原商城网站建设wordpress新闻直播系统
  • 做网站练手项目前端wordpress后端python
  • 自建网站做电商800元做网站
  • 获取网站访客qq号兰州北山生态建设局网站
  • 只用html5可以做网站吗武安建设局网站
  • 原型图网站做网站运营需要做哪些
  • 好看的学校网站模板免费下载discuz做网站
  • 设计师应该知道的网站支付宝网站开发流程
  • 怎么自己做单页网站织梦后台网站栏目空白
  • 江西省建设协会网站门户wordpress主题下载
  • 苏州沧浪区做网站的盐城网站开发市场
  • 做个什么样的网站比较好企业网站报价
  • 湖南北山建设集团股份有限公司官方网站西安 网站建设 培训学校
  • 专业的网站建设网络周口网站优化
  • 网站关键字优化技巧小程序定制 seo营销
  • 钱宝网站怎么做任务做网站如何把栏目放到首页
  • 网站开发项目方案书2017织梦网站怎么做seo
  • 沈阳电力建设总公司网站wordpress 热搜
  • 建设银行人力资源网站建设营销型网站的优势
  • 自己做个网站需要什么与网络公司洽谈做网站需要注意什么
  • 黔东南网站建设中信建设有限责任公司杨峰
  • 如何查看网站建设时间嵌入式开发培训机构排名
  • 网站keywords多少字青海微信网站建设
  • 视频网站直播怎么做开发公司技术科总结
  • 吉林省建设监理协会网站vi设计的目的和意义
  • 如何获取网站根目录局域网建设简单的影视网站