LeetCode 240. 搜索二维矩阵 II(二分查找 分治)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 从左下角或者右上角开始搜索
      • 2.2 分治算法

1. 题目

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

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

示例:
现有矩阵 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。
给定 target = 20,返回 false

类似题目:
LeetCode 74. 搜索二维矩阵(二分查找)
程序员面试金典 - 面试题 10.09. 排序矩阵查找

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-a-2d-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 从左下角或者右上角开始搜索

在这里插入图片描述

  • 在左下角或者右下角,以所在点形成的L形状是有序的,根据大小选择走的方向
  • 时间复杂度O(m+n)
class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {if(matrix.size()==0 || matrix[0].size() == 0)return false;int r = matrix.size(), c = matrix[0].size();int x = r-1, y = 0;//左下角while(x>=0 && y<c){if(matrix[x][y] == target)return true;else if(matrix[x][y] < target)y++;elsex--;}return false;}
};

or

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {if(matrix.size()==0 || matrix[0].size() == 0)return false;int r = matrix.size(), c = matrix[0].size();int x = 0, y = c-1;//右上角while(x<r && y>=0){if(matrix[x][y] == target)return true;else if(matrix[x][y] < target)x++;elsey--;}return false;}
};

在这里插入图片描述

2.2 分治算法

  • 左端点为矩阵左上角,右端点为矩阵右下角,按坐标取中
  • target 比 9 大,那么 下图左上角子矩阵肯定不存在,在余下3块中查找(红色)
  • target 比 9 小,那么 下图右下角子矩阵肯定不存在,在余下3块中查找(蓝色)
  • 时间复杂度O((m*n)的log4为底的3次幂) ,近似为(mn)0.8
    时间复杂度递推公式 O(T)=3O(T/4)+O(1)O(T)=3O(T/4)+O(1)O(T)=3O(T/4)+O(1)

f(T)=32∗3log⁡4(mn)≈O((mn)0.8)f(T) = {3 \over 2}*{3^{\log _4^{(mn)}}} \approx O({(mn)^{0.8}})f(T)=233log4(mn)O((mn)0.8)
在这里插入图片描述

class Solution {int m,n;
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {if(matrix.size()==0 || matrix[0].size() == 0)return false;int r = matrix.size(), c = matrix[0].size();m = r, n = c;int x1 = 0, y1 = 0, x2 = r-1, y2 = c-1, mx, my;bool ans = false;return search(matrix,target,x1,y1,x2,y2,ans);}bool search(vector<vector<int>> &matrix, int &target, int x1, int y1, int x2, int y2, bool &ans){if(ans)return true;if(x1 > x2 || y1 > y2 ||x1<0||x1>=m||x2<0||x2>=m||y1<0||y1>=n||y2<0||y2>=n)return false;int mx = x1+((x2-x1)>>1);int my = y1+((y2-y1)>>1);if(matrix[mx][my] == target){ans = true;return ans;}if(matrix[mx][my] < target){search(matrix,target,x1,my+1,mx,y2,ans)|| search(matrix,target,mx+1,y1,x2,my,ans)|| search(matrix,target,mx+1,my+1,x2,y2,ans);return ans;}else{search(matrix,target,x1,my,mx-1,y2,ans)|| search(matrix,target,mx,y1,x2,my-1,ans)|| search(matrix,target,x1,y1,mx-1,my-1,ans);return ans;}}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP哪个细分方向最具社会价值?

文 | 小戏让我们来大胆设想一个场景&#xff0c;老板突然发财搞到一笔钱&#xff0c;大手一挥给你五百万&#xff0c;让你去做自然语言处理的研究&#xff0c;你该先研究哪一个细分领域&#xff1f;机器翻译好像不错&#xff0c;信息抽取也很必要&#xff0c;对话系统更是 NLP …

论文浅尝 | 通过阅读实体描述进行零样本的实体链接

笔记整理 | 赖泽升&#xff0c;东南大学本科生来源&#xff1a;ACL2019动机先前实体链接的大多数工作都着重于与通用实体数据库的链接&#xff0c;通常希望链接到专门的实体词典&#xff0c;例如法律案件&#xff0c;公司项目描述&#xff0c;小说中的字符集或术语表。但这些工…

LeetCode 29. 两数相除(位运算)

1. 题目 给定两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 示例 1: 输入: dividend 10, divisor 3 输出: 3示例 2: 输入: dividend 7, divisor -…

Git使用的奇技淫巧

源 | Linux公社Git 版本对比相关操作[1] 输出工作区和暂存区的不同。git diff[2] 展示暂存区和最近版本的不同git diff --cached[3] 展示暂存区、工作区和最近版本的不同git diff HEAD[4] 展示本地仓库中任意两个 commit 之间的文件变动git diff <commit-id> <commit-…

Hyperloop,让发布简洁高效

Hyperloop 是什么&#xff1f; Hyperloop 是服务于美团点评客户端的组件发版、持续集成、App 打包构建、资源调度等各个环节的发布调度系统。名称起源于美国 Elon Musk 构想的 Hyperloop 超级高铁&#xff0c;象征着现代、简洁、高效。 Hyperloop 提供了一站式的平台&#xff0…

论文浅尝 | 基于潜在类别信息的实体链接

笔记整理 | 黄一凡&#xff0c;东南大学本科生来源&#xff1a;AAAI2020链接&#xff1a;https://arxiv.org/pdf/2001.01447v1.pdf一、简介作者意识到在利用预训练模型进行实体链接时&#xff0c;往往会将类别信息忽略&#xff0c;因此会导致模型将指称链接到拥有错误类别的错误…

LeetCode 166. 分数到小数(小数除法)

1. 题目 给定两个整数&#xff0c;分别表示分数的分子 numerator 和分母 denominator&#xff0c;以字符串形式返回小数。 如果小数部分为循环小数&#xff0c;则将循环的部分括在括号内。 示例 1: 输入: numerator 1, denominator 2 输出: "0.5"示例 2: 输入: …

百度飞桨弯道超车了吗?!

事情是这样的...前不久&#xff0c;小夕注意到了一份来自权威评测机构IDC发布的《2020年下半年深度学习平台市场份额报告》&#xff1a;▲IDC:2020年中国深度学习平台市场综合份额top 5立刻惊了&#xff01;印象里百度飞桨三年前还只是一个低调、小而美的深度学习框架&#xff…

美团点评酒旅数据仓库建设实践

在美团点评酒旅事业群内&#xff0c;业务由传统的团购形式转向预订、直连等更加丰富的产品形式&#xff0c;业务系统也在迅速的迭代变化&#xff0c;这些都对数据仓库的扩展性、稳定性、易用性提出了更高要求。对此&#xff0c;我们采取了分层次、分主题的方式&#xff0c;本文…

论文小综 | 文档级关系抽取方法(上)

本文作者&#xff1a;陈想&#xff0c;浙江大学在读博士&#xff0c;研究方向为自然语言处理张宁豫&#xff0c;浙江大学助理研究员&#xff0c;研究方向为自然语言处理、知识表示与推理1. 前言关系抽取(Relation Extraction, RE)是从纯文本中提取未知关系事实&#xff0c;是自…

LeetCode 621. 任务调度器(贪心)

1. 题目 给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行&#xff0c;并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务&#xff0c;或者在待命状…

吴恩达发起新型竞赛范式!模型固定,只调数据?!

文 | 小戏打开 Kaggle &#xff0c;琳琅满目的比赛让人目不暇接&#xff0c;研究的领域更是五花八门&#xff0c;从农林牧渔到衣食住行&#xff0c;似乎只要有数据&#xff0c;不论数据好坏&#xff0c;就可以直接使用各种机器学习的模型在其身上大展拳脚&#xff0c;从逻辑回归…

论文小综 | 文档级关系抽取方法(下)

本文作者&#xff1a;陈想&#xff0c;浙江大学在读博士&#xff0c;研究方向为自然语言处理张宁豫&#xff0c;浙江大学助理研究员&#xff0c;研究方向为自然语言处理、知识表示与推理这篇推文是文档级关系抽取方法的第二部分&#xff0c;前面的部分请移步推文“论文小综 | 文…

LeetCode 128. 最长连续序列(哈希set)

1. 题目 给定一个未排序的整数数组&#xff0c;找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例:输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#…

清华姚班教师劝退文:读博,你真的想好了吗?

文 | 张焕晨编 | 琰琰源 | AI科技评论先简单介绍一下我的背景。我本科在University of Wisconsin-Madison&#xff0c;然后去CMU念了个PhD&#xff0c;主要研究数据库方向。目前回国在清华IIIS&#xff08;姚班&#xff09;做助理教授&#xff0c;并且 cofound 了Singularity D…

纠删码存储系统中的投机性部分写技术

本文已被USENIX’17年度技术大会录用&#xff0c;此处为中文简译版。 阅读英文论文完整版请点击&#xff1a;Speculative Partial Writes in Erasure-Coded Systems 多副本和纠删码&#xff08;EC&#xff0c;Erasure Code&#xff09;是存储系统中常见的两种数据可靠性方法。与…

论文浅尝 - EMNLP | 通过元强化学习实现少样本复杂知识库问答

笔记整理 | 谭亦鸣&#xff0c;东南大学博士生来源&#xff1a;EMNLP 2020链接&#xff1a;https://www.aclweb.org/anthology/2020.emnlp-main.469.pdf本文关注聚合型复杂知识图谱问答任务&#xff0c;这类复杂问题的答案通常需要经过一些集合操作得到&#xff0c;例如&#x…

写了一篇关于 NLP 综述的综述!

文 | 小轶综述&#xff0c;往往是了解一个子领域最为高效的起点。然而&#xff0c;对于AI这样一个日新月异高速发展的行业&#xff0c;时效性也自然地成为了我们选择综述的衡量指标之一。即使一篇 AI 综述具有超高 citation&#xff0c;如果它写于 20 年前&#xff0c;那对今天…

美团点评容器平台HULK的调度系统

本文是美团点评基础架构系列文章之一。这个系列将全面介绍支撑数亿用户、超千万日订单的美团点评平台诸多业务的公共基础架构相关技术。系列已经发布的文章包括&#xff1a; - 《分布式会话跟踪系统架构设计与实践》 - 《Leaf——美团点评分布式ID生成系统》 - 《深度剖析开源分…

论文浅尝 | 利用跨内和跨间信息的预训练实体关系编码器

笔记整理 | 朱珈徵&#xff0c;天津大学硕士链接&#xff1a;https://www.aclweb.org/anthology/2020.emnlp-main.132.pdf动机从自由文本中提取实体和关系是自然语言处理中的一项重要任务。它的目标是识别具有特定类型(实体)和这些实体(关系)之间的语义关系的文本。本文主要研究…