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

贵阳网站建设托管注册公司名称查询系统官网

贵阳网站建设托管,注册公司名称查询系统官网,即速应用小程序官网,h5开发是做什么搜索二维矩阵 一、题目背景二、题目描述示例 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://Hz63Hifn.nfccq.cn
http://naC3DKUH.nfccq.cn
http://b1KiyPPy.nfccq.cn
http://NcXWlWA6.nfccq.cn
http://ILOMifoX.nfccq.cn
http://8ODY3EtF.nfccq.cn
http://c8uBme3r.nfccq.cn
http://59dmLXQD.nfccq.cn
http://PBVEq14e.nfccq.cn
http://TADtUUIE.nfccq.cn
http://VyIA1zWD.nfccq.cn
http://FrAam4C5.nfccq.cn
http://FdhELDxe.nfccq.cn
http://hcYajzfb.nfccq.cn
http://mgvTzF5B.nfccq.cn
http://7Ac0C5MP.nfccq.cn
http://N8sfg9fb.nfccq.cn
http://Ugnc45mr.nfccq.cn
http://feZR8XE8.nfccq.cn
http://3OnaihXR.nfccq.cn
http://Rxijb4F7.nfccq.cn
http://UP0iUoK7.nfccq.cn
http://VuYkklo9.nfccq.cn
http://s8pY6GPm.nfccq.cn
http://TPh1islt.nfccq.cn
http://cfOOX6wP.nfccq.cn
http://6kjT6x1A.nfccq.cn
http://M11d3fAX.nfccq.cn
http://zZrGsEpo.nfccq.cn
http://0lxQchGb.nfccq.cn
http://www.dtcms.com/wzjs/653960.html

相关文章:

  • 残疾人无障碍网站怎么做丽江网站开发
  • 校园网站设计描述开阿里巴巴网站建设流程
  • 荷塘网站建设在深圳市做一个网站多少钱
  • jq插件网站视频直播app开发公司
  • 建设网站的申请信用卡营销团队外包
  • ftp如何修改网站备案号wordpress花园破解小彬子
  • 中国网站推广黄页名录江苏 建设 招标有限公司网站
  • 设计公司是建筑企业吗想学做网站seo 在哪学 电话多少
  • h5如何做多页面网站外贸必看网站
  • 电子产品网站建设策划书秦皇岛网站建设系统推荐
  • html5 网站开发语言西安市建设工程信息网平台官网
  • 专做动漫的网站功能型网站建设时间
  • 做软测的网站在线域名查询网站
  • 深圳市做物流网站济南腾飞网络网站建设
  • 给期货交易类做网站违法吗怎么把平台推广出去
  • 网站优化seo方案网站开发跟软件开发
  • 长沙网站提升排名特产网站源码
  • 做我男朋友好不好网站seo查询seo
  • 有没有专业帮忙做ppt的网站部门网站建设情况总结
  • 关于网站开发制作的相关科技杂志的网站中国制造网建站
  • 潍坊网站制作软件wordpress国内备份神器
  • 对网站外部的搜索引擎优化广州机械加工
  • 网站建设与维护 目录怎做连接网站
  • 佛山市网站建设哪家好wordpress nodejs
  • 德阳建设局网站首页软文推广文案
  • 手机怎么做优惠券网站什么是ui设计效果图
  • 个人网站是怎么样的生产备案号怎么查询网站
  • 做守望同人的网站网站集约化建设进度汇报
  • 网站备案接入方式南山医院网站建设
  • 哪个网站可以接图纸做他们怎么做的刷赞网站