博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode Week13]Search a 2D Matrix
阅读量:4957 次
发布时间:2019-06-12

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

Search a 2D Matrix 题解

原创文章,拒绝转载

题目来源:


Description

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

  • Integers in each row are sorted from left to right.
  • The first integer of each row is greater than the last integer of the previous row.

Example

For example,

Consider the following matrix:

[  [1,   3,  5,  7],  [10, 11, 16, 20],  [23, 30, 34, 50]]

Given target = 3, return true.

Solution

class Solution {public:    bool searchMatrix(vector
>& matrix, int target) { if (matrix.empty() || matrix[0].empty()) { return false; } int size = matrix.size(); int low = 0, high = size - 1, mid; while (low < high) { mid = (high + low) / 2; if (target == matrix[mid].back()) return true; else if (target < matrix[mid].back()) high = mid; else low = mid + 1; } size = matrix[low].size(); vector
& arr = matrix[low]; low = 0; high = size - 1; while (low < high) { mid = (high + low) / 2; if (target == arr[mid]) return true; else if (target < arr[mid]) high = mid; else low = mid + 1; } return arr[low] == target; }};

解题描述

这道题考察的是二分查找。我选择的算法是先用二分查找确定target在矩阵的哪一行,再在这一行中进行二分查找找出target。不过AC之后想想,其实可以把矩阵直接看成一维数组进行二分查找,只需要多做一步下标转换即可。

转载于:https://www.cnblogs.com/yanhewu/p/7953549.html

你可能感兴趣的文章
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
流操作的规律
查看>>
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>
vue router-link子级返回父级页面
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
div 只显示两行超出部分隐藏
查看>>
C#小练习ⅲ
查看>>
电源防反接保护电路
查看>>
arraylist
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
2124: 等差子序列 - BZOJ
查看>>