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

图片上传网站制作班级优化大师怎么用

图片上传网站制作,班级优化大师怎么用,西安的最新疫情情况轨迹,个人网站有必要备案吗目录 引言搜索二维矩阵 II我的解题贪心求解解题思路详解搜索策略(以从右上角开始为例)为什么这种方法有效? 完整代码实现复杂度分析示例演示 🙋‍♂️ 作者:海码007📜 专栏:算法专栏&#x1f4a…

目录

  • 引言
  • 搜索二维矩阵 II
    • 我的解题
    • 贪心求解
    • 解题思路详解
      • 搜索策略(以从右上角开始为例)
      • 为什么这种方法有效?
    • 完整代码实现
    • 复杂度分析
    • 示例演示

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:算法专栏
  • 💥 标题:【Hot100】 240. 搜索二维矩阵 II
  • ❣️ 寄语:书到用时方恨少,事非经过不知难!

引言

搜索二维矩阵 II

  • 🎈 题目链接:
  • 🎈 做题状态:

我的解题

有三种方法,只想到了前两种,第三种没有想到。

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {// 1. 暴力搜索// 2. 二分法查找// 3. 贪心优化for (const auto& row : matrix){for (const auto& elem : row){if (elem == target){return true;}}}return false;}
};

二分查找

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {// 1. 暴力搜索// 2. 二分法查找// 3. 贪心优化for (const auto& row : matrix){// 每一行采用二分查找bool res = binary_search(row.begin(), row.end(), target);if (res) return true;}return false;}
};

贪心求解

解题思路详解

这种方法的巧妙之处在于充分利用了矩阵的两个排序特性:

  1. 行有序:每一行从左到右升序排列
  2. 列有序:每一列从上到下升序排列

搜索策略(以从右上角开始为例)

  1. 起始点选择:从矩阵的右上角(即第一行最后一列)开始搜索

    • 这个位置的元素是该行的最大值,该列的最小值
    • 这种特殊性质为我们提供了明确的移动方向
  2. 比较与移动规则

    • 当前元素 == 目标值:直接返回找到
    • 当前元素 > 目标值:说明目标值不可能在当前列(因为当前列下面的元素都更大),所以向左移动一列
    • 当前元素 < 目标值:说明目标值不可能在当前行(因为当前行左边的元素都更小),所以向下移动一行
  3. 终止条件

    • 找到目标值返回true
    • 行或列越界时(row >= m 或 col < 0)返回false

为什么这种方法有效?

  • 不会错过目标值:每次移动都排除了不可能包含目标值的行或列
  • 路径最优:每次比较都能最大限度地缩小搜索范围
  • 效率高:最多只需m+n-1次比较(从右上角到左下角的路径)

完整代码实现

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {// 处理空矩阵的特殊情况if (matrix.empty() || matrix[0].empty()) {return false;}// 获取矩阵的行数(m)和列数(n)int m = matrix.size();      // 行数int n = matrix[0].size();   // 列数// 初始化搜索起点为右上角(第一行最后一列)int row = 0;          // 起始行int col = n - 1;      // 起始列// 在矩阵范围内进行搜索while (row < m && col >= 0) {// 获取当前元素值int current = matrix[row][col];if (current == target) {// 找到目标值,直接返回truereturn true;} else if (current > target) {// 当前值太大,目标值可能在当前列的左侧col--;  // 向左移动一列} else {// 当前值太小,目标值可能在当前行的下方row++;  // 向下移动一行}}// 搜索结束仍未找到,返回falsereturn false;}
};

复杂度分析

  • 时间复杂度:O(m + n)
    • 最坏情况下需要从右上角移动到左下角
    • 每次循环排除一行或一列
  • 空间复杂度:O(1)
    • 只使用了常数个额外空间

示例演示

以查找目标值5为例:

矩阵:
[[1, 4, 7, 11],[2, 5, 8, 12],[3, 6, 9, 16],[10,13,14,17]
]搜索路径:
1. 从11开始 (11 > 5) → 左移
2. 到7 (7 > 5) → 左移
3. 到4 (4 < 5) → 下移
4. 到5 (5 == 5) → 找到

这种贪心搜索法是解决此类二维矩阵搜索问题的最优方法之一,既高效又直观。

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

相关文章:

  • linux建设网站php打开提示404搜索引擎关键词竞价排名
  • 东莞seo建站广告seo平台代理
  • 济南网站开发哪家好做网站的好处
  • 深圳网站公司招聘信息百度知道推广软件
  • 性是怎么做视频网站网络优化软件有哪些
  • 外网网站建设调研报告什么是百度推广
  • 永定门网站建设seopeixun com cn
  • 免费网站建站 网页百度推广seo是什么意思
  • 外网门户网站建设方案新媒体营销成功案例
  • 自己怎么做公司网站虞城seo代理地址
  • 网站标题长度营销策略的概念
  • 专业做网站方案seo站长综合查询
  • 建站 手机网站cpc广告接单平台
  • 建设网站查询长春网长春关键词排名站设计
  • 地产股最新消息seo营销的概念
  • 邢台做网站动态今日中国新闻
  • 阿里巴巴网站威海哪里做8个公开大数据网站
  • 专业做网站流程东莞网站建设排名
  • 郑州做网站公司+卓美今日足球赛事数据
  • 企业网站建设的基本原则今天最新新闻摘抄
  • frontpage做网站教程百度一下你就知道官网新闻
  • 免费培训学校网站源码百度查询
  • 做网站保存什么格式最好google怎么推广
  • 长沙网站优化外包服务百度大数据
  • 佛山网站建设公司怎么做seo经验
  • 怎么做网站在网上能搜到你网站优化推广怎么做
  • 如何做别人网站镜像自动seo系统
  • 可以做微信小测试的网站北京专门做seo
  • 工程项目编号查询系统seo网络优化师招聘
  • 南宁关键词网站排名西安百度推广客服电话多少