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

LeetCode--Search a 2D Matrix II(分治策略)

Search a 2D Matrix II

## [更多技术博客 http://vilins.top/](http://vilins.top/)

题目

Write an efficient algorithm that searches for a value in anmxnmatrix. This matrix has the following properties:

  • Integers in each row are sorted in ascending from left to right.
  • Integers in each column are sorted in ascending from top to bottom.

Example:

Consider the following 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] ]

Given target =5, returntrue.

Given target =20, returnfalse.

分析

这里不可能用直接搜索的办法去做,根据矩阵是有序的,根据这个特点,首先想到的是二分查找,本来实现的算法是对每一行都进行二分查找,这样便将一个问题分开为若干个子问题。然后我们发现某些行可以之间去掉,因为是有序的,当受元素大于target或者末尾元素小于target时我们可以直接跳过。

源码

class Solution { public: bool searchMatrix(vector<vector<int> >& matrix, int target) { if(matrix.size() == 0||(matrix.size() != 0&&matrix[0].size() == 0)) { return false; } for(int i = 0; i < matrix.size(); i++) { if(matrix[i][matrix[0].size() - 1] < target||matrix[i][0] > target) { continue; } if(binary_search(matrix[i],target)) { return true; } } return false; } bool binary_search(vector<int> m, int target) { int begin = 0, end = m.size() - 1, middle = (begin + end)/2; while(begin <= end) { middle = (begin + end)/2; if(target == m[middle]) { return true; } else if(target < m[middle]) { end = middle -1; } else { begin = middle + 1; } } return false; } };

## [更多技术博客 http://vilins.top/](http://vilins.top/)

http://www.jsqmd.com/news/933315/

相关文章:

  • 从漆包线到发光盆景:手工焊接1206贴片LED的电子艺术实践
  • 基于Arduino与NeoPixel的智能光剑制作:从电路设计到3D打印全流程
  • 如何快速掌握Illustrator脚本:提升设计效率的完整实战指南
  • 新手也能搞定!用ADS 2023一步步仿真LNA的直流偏置与稳定性(附原理图)
  • 2026年5月无溶剂环氧涂料工厂推荐,环氧酚醛/光固化保护套/石墨烯涂料/无溶剂环氧涂料,无溶剂环氧涂料批发厂家怎么选 - 品牌推荐师
  • FortiGate 7.4.2 新机开箱第一步:从接上网线到设置中文界面的保姆级避坑指南
  • Spring Boot 3 + Swagger 3 + Knife4j 4.1.0:从配置到美化,打造团队都爱用的API文档(避坑指南)
  • 如何免费永久保存微信聊天记录:WeChatMsg终极完整使用指南
  • WSL2 Ubuntu 20.04 装完Docker报错?别慌,一个命令切换iptables模式就能搞定
  • Unique Paths II(动态规划)
  • 格式规范否?8款AI论文写作工具梯队榜,毕业答辩稳了!
  • 【Sora 2倒放视频生成黑科技】:全球仅3家实验室验证的时序逆向建模方法首度公开
  • 2026年6月,北京花洒置物平台服务商深度解析:为何恒洁卫浴成为品质之选? - 2026年企业资讯
  • 统计思维实战自测:提升数据决策力,避开常见认知陷阱
  • AI生成图能注册版权吗?(美国版权局2023-2024全部裁定原文深度拆解)
  • 保姆级教程:用Python和Pandas快速上手UJIIndoorLoc室内定位数据集
  • 2026年管道式电磁流量计TOP5选型参考名录:管道式电磁流量计、蒸汽涡街流量计、超声波液位计、一体化温度变送器选择指南 - 优质品牌商家
  • FreeSWITCH新手避坑指南:第一次用fs_cli必须知道的3个关键点和1个危险操作
  • 网络编程的三要素
  • 惊了!输入题目,这几款AI写作辅助软件就能生成图文并茂的毕业论文
  • 用micro:bit与舵机制作交互式纸板机器人:从电容触摸到机械传动
  • OV系列摄像头SCCB总线配置避坑指南:从三线到两线,时序参数怎么调才稳定?
  • 告别VCP!用FTDI D2XX库直接驱动MPSSE引擎(以FT2232H为例,含C++/Qt代码)
  • 别再只跑默认参数了!TransDecoder 5.7.1高级参数调优与结果深度解读指南
  • 电玩城游戏机实测评测:电玩城游戏机、文审游戏机、出票游戏机、商用游戏机、实物五门文审机、扣篮王游戏机、扣篮王选择指南 - 优质品牌商家
  • Arduino JCB挖掘机模型:从机电一体化到3D打印的完整实践指南
  • Edit Distance(动态规划)
  • 告别过曝死黑!用Python+OpenCV玩转HDR多曝光融合,手机拍的照片也能救回来
  • 在Python中TCP网络程序开发的步骤流程
  • 别再只会apt-get install了!遇到pkgProblemResolver依赖错误,试试这个更聪明的aptitude命令