力扣hot100 ——搜索二维矩阵 || m+n复杂度优化解法

news/2025/2/24 17:55:54/

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

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

解题思路:

借助行和列有序特性,不断按行或者列缩小范围;途中数字表示每次执行,不同颜色框出的范围就是每次缩小后的区域,由于不是按行就是按列缩小,所以时间复杂度就是O(m+n)

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {// 边界缩小查找// 从右上角开始缩小;先水平调整,然后竖直缩小// 借助行和列有序特性,不断按行或者列缩小范围;由于不是按行就是按列缩小,所以时间复杂度就是O(m+n)int rows = matrix.size(),clos = matrix[0].size(); // row 行上限  clo 列上限int row = 0,clo = clos - 1;if(target > matrix[rows-1][clos - 1]){return false;}while(row < rows && clo >= 0){if(matrix[row][clo] == target){return true;}else if(matrix[row][clo] > target){--clo;}else{++row;}}return false;}
};


http://www.ppmy.cn/news/1574675.html

相关文章

Prompt-to-Prompt 进行图像编辑

Prompt-to-Prompt 图像编辑是一种基于注意力机制的图像编辑技术&#xff0c;它通过在输入图像和编辑目标之间建立一个双向注意力机制来实现图像编辑。这种技术可以让模型根据输入图像的内容和编辑目标的描述来进行图像编辑。 交叉注意力控制是 Prompt-to-Prompt 图像编辑中的一…

深入探讨 Rust 中的 Deref Trait:让智能指针像常规引用一样工作

1. 引用与解引用操作简介 首先&#xff0c;我们来看一下普通引用是如何使用解引用操作的。考虑下面这个简单例子&#xff1a; fn main() {let x 5;let y &x;assert_eq!(5, x);// 使用 * 运算符来解引用 y&#xff0c;从而获取它指向的值assert_eq!(5, *y); }在这个例子…

通过Hive小文件合并(CombineHiveInputFormat)减少80%的Map任务数

一、Hive小文件合并&#xff08;CombineHiveInputFormat&#xff09;减少Map任务数 核心问题&#xff1a;小文件过多导致Map任务激增&#xff08;每个文件至少一个Map&#xff09;&#xff0c;浪费资源且增加NameNode压力 优化策略&#xff1a; 输入合并&#xff08;Map前合并…

【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记

本文内容为重写上一节课中的单链表&#xff0c;将其重构成更易于用户使用的链表&#xff0c;实现多种操作链表的方法。 1. 重构单链表SLList 在上一节课中编写的 IntList 类是裸露递归的形式&#xff0c;在 Java 中一般不会这么定义&#xff0c;因为这样用户可能需要非常了解…

Spring Boot中如何使用Thymeleaf模板引擎

Thymeleaf 是一个现代化的服务器端 Java 模板引擎,在 Spring Boot 项目中使用它可以方便地将 Java 代码和 HTML 页面进行整合,生成动态的 Web 页面。以下将详细介绍在 Spring Boot 中如何使用 Thymeleaf 模板引擎。 1. 添加依赖 如果你使用的是 Maven 项目,在 pom.xml 中添…

Python中常见库 PyTorch和Pydantic 讲解

PyTorch 简介 PyTorch 是一个开源的深度学习框架&#xff0c;由 Facebook 的 AI 研究团队开发。它提供了丰富的工具和库&#xff0c;用于构建和训练各种深度学习模型&#xff0c;如卷积神经网络&#xff08;CNN&#xff09;、循环神经网络&#xff08;RNN&#xff09;及其变体&…

leetcode_位运算 2206. 将数组划分成相等数对

2206. 将数组划分成相等数对 给你一个整数数组 nums&#xff0c;它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对&#xff0c;满足&#xff1a; 每个元素 只属于一个数对。同一数对中的元素相等 。如果可以将 nums 划分成 n 个数对&#xff0c;请你返回 true &#xff0…

被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT

cuda、cuDNN、tensorRT的使用场景 1. CUDA&#xff08;Compute Unified Device Architecture&#xff09; 作用&#xff1a; GPU 通用计算&#xff1a;CUDA 是 NVIDIA 的并行计算平台和编程模型&#xff0c;允许开发者直接利用 GPU 的并行计算能力&#xff0c;加速通用计算任…