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

力扣hot100:240.搜索二维矩阵II(脑子)

吉大21级算法分析与设计的一道大题,由于每一行都是排好序的直接逐行二分 可以达到:O(mlogn)。但是这里追求更广的思路可以使用其他方法。

矩阵四分:

在矩阵中用中心点比较,如果target大于中心点的值,则由于升序排列,以中心点为右下角的小矩阵就不用再查找了,因为他们一定比target小。剩下三个矩形都可能比中心点大,因此在剩下三个矩阵中继续查找;如果target小于中心点,以中心点为右下角的小矩阵可能包含,并且中心点的左下方和右上方都有可能比中心点小,因此仍然需要继续查找。

        每次可以去掉矩阵中的¼,对于每一个小矩阵它们是整个矩阵的¼,分析如下:

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {tar=target;return find(matrix,0,matrix.size()-1,0,matrix[0].size()-1);}
private:bool find(vector<vector<int>>& matrix,int row_left,int row_right,int col_top,int col_bottom){if(row_left>row_right||col_top>col_bottom||col_bottom>=matrix[0].size()||row_right>=matrix.size()) return false;if(row_left==row_right&&col_top==col_bottom&&tar!=matrix[row_left][col_bottom]) return false;int mid_row=(row_left+row_right)>>1;int mid_col=(col_top+col_bottom)>>1;if(tar==matrix[mid_row][mid_col]) return true;if(tar>matrix[mid_row][mid_col])return find(matrix,mid_row+1,row_right,col_top,mid_col)||find(matrix,row_left,mid_row,mid_col+1,col_bottom)||find(matrix,mid_row+1,row_right,mid_col+1,col_bottom);else return find(matrix,row_left,mid_row,col_top,mid_col)||find(matrix,mid_row+1,row_right,col_top,mid_col)||find(matrix,row_left,mid_row,mid_col+1,col_bottom);}
private:int tar;
};

Z字形查找:

Krahets - 力扣(LeetCode):

用二叉树来看就特别清晰了。任何一个结点均满足,左儿子小于它,右儿子大于它。如果target比它大,同一行左边一定不再满足要求,如果target比它小,同一列下边一定不再满足要求。由于我们是从右上角开始的,依次进行,每一步都使得解只能在划定的范围内,因此这样做是正确的,时间复杂度为O(m+n)。

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m=0,n=matrix[0].size()-1;while(m<matrix.size()&&n>=0&&matrix[m][n]!=target){if(matrix[m][n]>target) --n;else ++m;}cout<<m<<' '<<n;if(m<matrix.size()&&n>=0) return true;return false;}
};

暴力解法:

防止题目做多了不会暴力了()

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for(int i=0;i<matrix.size();++i)for(int &num:matrix[i])if(num==target) return true;return false;}
};

相关文章:

力扣hot100:240.搜索二维矩阵II(脑子)

吉大21级算法分析与设计的一道大题&#xff0c;由于每一行都是排好序的直接逐行二分 可以达到&#xff1a;O(mlogn)。但是这里追求更广的思路可以使用其他方法。 矩阵四分&#xff1a; 在矩阵中用中心点比较&#xff0c;如果target大于中心点的值&#xff0c;则由于升序排列&am…...

Apache Hive(三)

一、Apache Hive 1、ETL数据清洗 数据问题 问题1&#xff1a;当前数据中&#xff0c;有一些数据的字段为空&#xff0c;不是合法数据 解决&#xff1a;where 过滤 问题2&#xff1a;需求中&#xff0c;需要统计每天、每个小时的消息量&#xff0c;但是数据中没有天和小时字段…...

ORM(对象关系映射)的概念,并说明在Python中如何使用

ORM&#xff08;对象关系映射&#xff09;的概念&#xff0c;并说明在Python中如何使用 ORM&#xff08;对象关系映射&#xff09;是一种编程技术&#xff0c;它实现了将关系型数据库中的数据映射到程序中的对象模型&#xff0c;使得开发者能够使用面向对象的方式来操作数据…...

Br 算法

基于google的brotli开源&#xff0c;实现Br算法。 #include <brotli/encode.h> #include <brotli/decode.h>namespace br {/*compress unsigned char* content,if ok return non empty unsigned char * */std::string compress_string(const std::string& c…...

GPT实战系列-一种构建LangChain自定义Tool工具的简单方法

GPT实战系列-一种构建LangChain自定义Tool工具的简单方法 LLM大模型&#xff1a; GPT实战系列-探究GPT等大模型的文本生成 GPT实战系列-Baichuan2等大模型的计算精度与量化 GPT实战系列-GPT训练的Pretraining&#xff0c;SFT&#xff0c;Reward Modeling&#xff0c;RLHF …...

【Docker】Memcached 容器化部署

Memcached环境标准软件基于Bitnami Memcached 构建。当前版本为1.6.24 你可以通过轻云UC部署工具直接安装部署&#xff0c;也可以手动按如下文档操作&#xff0c;该项目已经全面开源&#xff0c;可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platf…...

Langchain-Chatchat本地搭建ChatGLM3模型和提取PDF内容

文章目录 1、软件要求2、安装CUDA2.1、安装gcc2.2、安装CUDA 3、安装Anaconda33.1、下载Anaconda33.2、创建python虚拟环境 4、部署系统4.1、下载源码4.2、安装依赖4.3、下载模型4.4、初始化配置和知识库4.4.1、初始化配置4.4.2、初始化知识库 4.5、运行4.6、运行4.6.1、启动4.…...

案例分析篇03:一篇文章搞定软考设计模式考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…...

套接字的地址结构,IP地址转换函数,网络编程的接口

目录 一、套接字的地址结构 1.1 通用socket地址结构 1.2 专用socket地址结构 1.2.1 tcp协议族 1.2.3 IP协议族 二、IP地址转换函数 三、网络编程接口 3.1 socket() 3.2 bind() 3.3 listen() 3.4 accept() 3.5 connect() 3.6 close() 3.7 recv()、send() 3.8 recv…...

Java回顾总结--RandomAccessFile和NIO

目录 一、RandomAccessFile1.1 为什么要有RandomAccessFile&#xff1f;1.2 常用方法简介1.3 RandomAccessFile 特点和优势1.3.1 既可以读也可以写1.3.2 可以指定位置读写 1.4 示例 二、NIONIO使用示例 一、RandomAccessFile 1.1 为什么要有RandomAccessFile&#xff1f; Ran…...

2024年3月第15届蓝桥杯青少组STEMA考试C++中高级真题试卷

第15届蓝桥杯青少组STEMA考试C中高级真题试卷&#xff08;2024年3月&#xff09; 题目总数&#xff1a;11 总分数&#xff1a;400 选择题 第 1 题 单选题 (110010)2(c3)16的结果是( )。 A. (240)10 B. (11110101)2 C. (366)8 D. (f6)16 第 2 题 单选题 …...

Hyperf AOP 和 注解

注解 (hyperf.wiki) AOP 面向切面编程 (hyperf.wiki) 切面 定义切面(Aspect) 根据官方教程定义一个切面。可以指定类、方法、参数和注解上生效。 <?php namespace App\Aspect;use App\Service\SomeClass; use App\Annotation\SomeAnnotation; use Hyperf\Di\Annotatio…...

【C++】string类(介绍、常用接口)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;http://t.csdnimg.cn/eCa5z 目录 string类的常用接口说明 string类对象的常见构造 ​编辑 string字符串的遍历&#xff08;迭代器&#xf…...

SpringBoot项目中同时支持https和http协议

实用干货&#xff01;看壹哥如何在SpringBoot项目中同时支持https和http协议_springboot http htpps共存-CSDN博客...

三大排序:冒泡、选择、插入

冒泡排序&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它通过比较相邻元素的大小&#xff0c;并交换它们的位置&#xff0c;使较大&#xff08;或较小&#xff09;的元素逐渐“浮”到数组的一端&#xff0c;从而实现排序的目的。 下面是冒…...

Android中MultiDex优化

MultiDex基本思路 当一个Dex文件太肥的时候(方法数目太多、文件太大)&#xff0c;在打包或在安装或运行apk也会出问题。 解决方法就是将这个硕大的Dex文件拆分成若干个小的Dex文件。 刚好一个ClassLoader可以有多个DexFile。 MultiDex主要性能瓶颈 解压缩和Dex优化&#xff08;…...

MySQL 8.0 的执行计划(EXPLAIN)

MySQL 8.0 的执行计划&#xff08;也称为“EXPLAIN”计划&#xff09;是数据库优化器为 SQL 查询生成的步骤序列。解读执行计划可以帮助数据库管理员&#xff08;DBA&#xff09;和开发者理解查询如何执行&#xff0c;识别潜在的性能问题&#xff0c;并据此优化查询。 下面是如…...

leetcode——二叉树问题汇总

leetcode 144. 二叉树的前序遍历 ①递归法&#xff1a; /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val,…...

Android基础开发-饿汉式申请权限

1、案例&#xff0c;打开app时&#xff0c;就要申请权限 直接在onCreateView中申请所有权限就可&#xff0c;然后在选择的回调里边判断申请的结果 package com.example.client;import android.Manifest; import android.content.Intent; import android.content.pm.PackageMa…...

java Day7 正则表达式|异常

文章目录 1、正则表达式1.1 常用1.2 字符串匹配&#xff0c;提取&#xff0c;分割 2、异常2.1 运行时异常2.2 编译时异常2.3 自定义异常2.3.1 自定义编译时异常2.3.2 自定义运行时异常 1、正则表达式 就是由一些特定的字符组成&#xff0c;完成一个特定的规则 可以用来校验数据…...

OpenClaw+千问3.5-9B自动化报告:从数据到PPT一键生成

OpenClaw千问3.5-9B自动化报告&#xff1a;从数据到PPT一键生成 1. 为什么需要自动化报告系统 每周五下午三点&#xff0c;我的日历总会准时弹出提醒&#xff1a;"准备本周工作报告"。这个重复性任务通常要耗费1-2小时&#xff1a;从数据库导出CSV、用Excel制作图表…...

QTableWidget 表格组件渭

7.1 初识三维模型 7.1.1 三维模型的数据载体 随着计算机图形技术的发展&#xff0c;我们或多或少都会见过或者听说过三维模型。笔者始终记得小时候第一次在电视上看到三维动画《变形金刚&#xff1a;超能勇士》的震撼感受&#xff1b;而现在我们已经可以在手机上玩三维游戏《王…...

P4561 [JXOI2018] 排序问题

题意 有一个序列&#xff0c;现在要在结尾加上 mmm 个 [l,r][l,r][l,r] 之间的数&#xff0c;求在所有方案中&#xff0c;猴子排序&#xff08;每次随机一个排列&#xff0c;检查是否有序&#xff09;的次数期望最大次数。 思路 假设最终的序列中数 iii 出现的次数是 cic_ici​…...

设置echarts 图例为长方形

在 ECharts 中&#xff0c;要将图例&#xff08;legend&#xff09;的 标记&#xff08;icon&#xff09; 设置为 长方形&#xff08;矩形&#xff09;&#xff0c;可以通过 legend 配置项中的 icon 属性来实现。✅ 方法&#xff1a;使用 icon: rect ECharts 内置了多种图例标记…...

终极adr-tools错误处理与调试指南:7个常见问题解决方案大全

终极adr-tools错误处理与调试指南&#xff1a;7个常见问题解决方案大全 【免费下载链接】adr-tools Command-line tools for working with Architecture Decision Records 项目地址: https://gitcode.com/gh_mirrors/ad/adr-tools adr-tools是一款高效的架构决策记录&am…...

如何3步快速检测微信单向好友:免费开源工具完整教程

如何3步快速检测微信单向好友&#xff1a;免费开源工具完整教程 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

OpenClaw定时任务管理:千问3.5-27B实现凌晨自动备份

OpenClaw定时任务管理&#xff1a;千问3.5-27B实现凌晨自动备份 1. 为什么需要AI驱动的定时任务&#xff1f; 上个月我经历了一次惨痛的数据丢失——连续三天熬夜写的代码&#xff0c;因为笔记本突然蓝屏而全部消失。虽然最终通过碎片文件恢复了部分内容&#xff0c;但这件事…...

LAYONTHEGROUND筛

一、什么是requests&#xff1f; requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你&#xff1a; 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景&#xff1a; …...

Zookeeper 选举机制解析

zk中有两种角色&#xff1a;Leader 和 FllowerLeader是集群各台电脑投票选举出来的。事务【非常重要】&#xff1a;一通操作&#xff0c;要么同时成立&#xff0c;要么都不成立。zookeeper:Leader&#xff1a;Zookeeper 集群工作的核心。1、事务请求&#xff08;写操作&#xf…...

UEFITool高级搜索功能:5个正则表达式技巧快速定位固件元素

UEFITool高级搜索功能&#xff1a;5个正则表达式技巧快速定位固件元素 【免费下载链接】UEFITool UEFI firmware image viewer and editor 项目地址: https://gitcode.com/gh_mirrors/ue/UEFITool UEFITool是一款强大的UEFI固件镜像查看和编辑工具&#xff0c;能够帮助用…...