博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣网 | 算法面试题汇总 | 开始之前 | 搜索二维矩阵 II
阅读量:4140 次
发布时间:2019-05-25

本文共 1561 字,大约阅读时间需要 5 分钟。

文章目录

题目

解析

暴力

class Solution {
public: bool searchMatrix(vector
>& matrix, int target) {
int m = matrix.size(), n = matrix[0].size(); for(int i=0;i

剪枝

初始左下角指针(row = matrix.size()-1,col=0):

  • 如果等于target,返回true;
  • 如果小于target,col+=1(因为每行从左到右,从小到大);
  • 如果大于target,row-=1(因为每列从下到上,从大到小);

简而言之,每个指针,所在列上面的会比它小,下面会比它大;所在行左边比它小,右边比它大;

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

二分法

class Solution {
public: bool searchMatrix(vector
>& matrix, int target) {
for(int i = 0; i < matrix.size(); ++i) {
if(binarySearch(matrix, i, target)) return true; } return false; } bool binarySearch(vector
>& matrix, int i, int target) {
int left = 0, right = matrix[0].size()-1; while(left <= right) {
int mid = left + (right - left)/2; if(target > matrix[i][mid]) left = mid+1; else if(target < matrix[i][mid]) right = mid-1; else return true; } return false; }};/*作者:zrita链接:https://leetcode-cn.com/problems/search-a-2d-matrix-ii/solution/c-xian-xing-cha-zhao-er-fen-z-by-zrita/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/
你可能感兴趣的文章
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>
【web素材】02-10款大气的购物商城网站模板
查看>>
6种方式实现JavaScript数组扁平化(flat)方法的总结
查看>>
49个在工作中常用且容易遗忘的CSS样式清单整理
查看>>
20种在学习编程的同时也可以在线赚钱的方法
查看>>
隐藏搜索框:CSS 动画正反向序列
查看>>
12 个JavaScript 特性技巧你可能从未使用过
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
【web素材】03-24款后台管理系统网站模板
查看>>
Flex 布局教程:语法篇
查看>>
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>