2018年LeetCode高频算法面试题刷题笔记——搜索二维矩阵 II(开始之前)

2023-11-08

1.解答之前的碎碎念:

这个题一开始我想的很简单,想着是个二维的二分查找,然后提交代码,果不其然出错了。。。因为并不能保证第i+1行的每个元素都大于第i行,不过想到了递归,也算是有点进步(虽然最后用递归写了一个没有通过。。。但是自己在vs里测试的没问题呀。。。不明白为什么)。

2.问题描述:

编写一个高效的算法来搜索 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

3.解答思路:

参考链接:https://blog.csdn.net/majichen95/article/details/81632067

摘录:

如果我们观察题目中给的那个例子,我们可以发现有两个位置的数字很有特点,左下角和右上角的数。例如右上角的7,往左所有的数变小,往下所有数增加,那么我们就可以和目标数相比较,如果目标数大,就往下搜,如果目标数小,就往左搜。这样就可以判断目标数是否存在。

4.答案:

注意:要考虑矩阵为空的情况!

class Solution {
public:
	bool searchMatrix(vector<vector<int>>& matrix, int target) {
		
		if (matrix.empty())
		{
			return false;
		}
		int m = matrix.size();
		int n = matrix[0].size();

		int x = 0;
		int y = n - 1;

		

		while (x < m && y >= 0)
		{
			if(x == m - 1 && y == 0)
			{
				if (target == matrix[x][y])
				{
					return true;
				}
				else return false;
			}
			else
			{
				if (target == matrix[x][y])
				{
					return true;
				}
				else if (target < matrix[x][y])
				{
					--y;
				}
				else
				{
					++x;
				}
			}
		}
		return false;

	}
};

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2018年LeetCode高频算法面试题刷题笔记——搜索二维矩阵 II(开始之前) 的相关文章

  • 8086CPU外部引脚图

    8086CPU外部引脚图 在最小模式中引脚定义 AD15 AD0 Address Data Bus 16位地址 数据总线 分时复用 传输地址时三态输出 传输数据时三态双向输入 输出 在总线周期T1状态 CPU在这些引脚上输出存储器或I O端

随机推荐

  • 108-109-----JS基础-----获取元素的样式与getStyle方法(兼容不同浏览器修改样式的接口)

    一 代码 上一节操作内联样式时 只对内联的有效 如果不是内联的话 获取到的属性是一个空值 所以需要获取元素的样式接口去获取样式属性 而由于不同浏览器对获取元素的样式的支持不一样 所以需要getStyle方法去兼容不同的浏览器 注 通过sty
  • 保证文件名唯一(java)

    问题描述 给你一个长度为 n 的字符串数组 names 你将会在文件系统中创建 n 个文件夹 在第 i 分钟 新建名为 names i 的文件夹 由于两个文件 不能 共享相同的文件名 因此如果新建文件夹使用的文件名已经被占用 系统会以 k
  • Centos/Linux在线环境下载安装包,到离线环境安装,并解决依赖问题

    在线环境下载rpm包 我们以yum utils包为例 在线环境使用下面的代码安装 sudo yum install y yum utils 离线环境需要的是安装包 因此下载yum utils的安装包的代码 mkdir ypm packet
  • 开关电源环路稳定性分析(01)-Buck变换器

    大家好 这里是大话硬件 说到开关电源不得不提的就是开关的环路稳定性 但是这一块目前用的DC DC芯片 很多厂家在芯片内部都已经做好了 所以对于使用的人来说 即使不太关注环路的稳定 按照手册中推荐的值设计产品也能正常使用 当然 仅仅是按照手册
  • 可充电点电池和不可充电电池区分?

    看到网上很多人都在问 碳性电池能充电吗 回答很明确 不可以 我们生活中使用的5号电池和7号电池分为可充电和不可充电两种 不可充电的5号电池和7号电池有碳性电池和碱性电池 碳性电池是一次电池 即干电池 是不能充电的 碳性电池价格比碱性电池便宜
  • Unity导入package简单操作流程

    Unity导入package简单操作流程 前言 在Unity 实际开发工作中 需要将一些现成的程序包或者插件导入到自己的工厂里 方便自己使用其中的一些现成的功能 方便自己开发 节约工作时间 这篇博客简单介绍下Unity导入package简单
  • C++ 判断磁盘是否为可移动磁盘

    传入参数path F bool isUsbDrv const wchar t path include
  • 数据库恢复技术

    数据库恢复技术和并发控制技术 事务 故障 1 事物内部的故障 2 系统故障 3 介质故障 4 计算机病毒 恢复的实现技术 1 数据存储 2 登录日志文件 各故障对应的恢复策略 1 事物故障的恢复 2 系统故障的恢复 3 介质故障的恢复 检查
  • 【华为机试刷题笔记】HJ14-字符串排序

    题目描述 给定 n 个字符串 请对 n 个字符串按照字典序排列 数据范围 1 n 1000 1 leq n leq 1000 1 n 1000 字符串长度满足
  • uniapp map 请求接口之后数据不渲染问题

    uniapp map 请求接口之后数据不渲染问题 我先说我遇到的问题 我使用uniapp 的 map 组件 组件所有绑定数据都有一个初始化 之后在 mounted 中请求服务器数据 不过在 map 组件里面没有渲染请求到的数据 使用 set
  • 千兆网线做法和网线接法注意事项

    据市场调查 目前千兆网线已经很 普遍了 但很多朋友对千兆网线水晶头接法还不是很了解 在制作网线的过程中会遇到各式各样的问题 有时会造成无法打开网页 在动手之前 我们要对于网线的制作有一个正确的认识 从而制作出我们需要的网线 网线由一定距离长
  • 区块链系列-----加密算法汇总

    背景 区块链背景下 对密码学技术要求需要有很深的研究 笔者以java语言为例 搜罗各种加密算法的相关使用 github地址 https github com niyuelin1990 mycrypto 简介 搜罗各种加密算法 电子邮件传输算
  • docker使用指南

    1 安装docker 使用如下命令可以安装docker 安装成功后docker version可以查看到docker的client和server信息 sudo apt install docker docker io y 为普通用户添加权限
  • mysql json类型最大长度限制_MySQL json 数据类型

    必须要5 7以上版本才能使用 写在开头 mysql json 的功能很强大 只是用来当一个储存数据的字段 就没什么意义了 使用proto做交互的话 只要JSON 写得好 用proro Unmarshal 就可以很方便的转换类型 可以精简很多
  • github 项目的基本结构以及git的使用方法

    github 项目的基本结构以及git的使用方法 介绍 根据README md 一般都在下面 阅读规则 每个团队根据队伍内部技术人员配置选择课题 课题在docs 目录下 对于docs 下非本组选择的课题文件不要进行任意修改 docs 下课题
  • 转onnx包问题

    pip install onnx 1 7 0 i https pypi tuna tsinghua edu cn simple 其实这一步已经可以了 pip install coremltools YOLOv5的pytorch模型文件转换为
  • redis的事务和watch机制

    这里写目录标题 第一章 redis事务和watch机制 1 1 redis事务 事务的三大命令 语法 开启事务 multi 语法 执行事务 exec 语法 取消事务 discard 1 2 redis事务的错误和回滚的情况 1 3 watc
  • Es6数组新增方法与字符串新增方法和新增数据类型

    1 数组新增方法 map方法 将数组中每一个元素依次取出 进行遍历 返回一个新的数组 let movies id 1 name 大话西游 author xxxx imgUrl http xxx douban com 1 jpg id 2 n
  • AST-解混淆 赋值语句嵌套三目表达式的优化

    处理前 0x4ae6ff 0x41bc28 4957228979 650037875 处理后 0x41bc28 0x4ae6ff 4957228979 0x4ae6ff 650037875 通用插件编写规则 const TransCondi
  • 2018年LeetCode高频算法面试题刷题笔记——搜索二维矩阵 II(开始之前)

    1 解答之前的碎碎念 这个题一开始我想的很简单 想着是个二维的二分查找 然后提交代码 果不其然出错了 因为并不能保证第i 1行的每个元素都大于第i行 不过想到了递归 也算是有点进步 虽然最后用递归写了一个没有通过 但是自己在vs里测试的没问