[LeetCode] 74. Search a 2D Matrix 解题思路
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.
For example,
Consider the following matrix:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target = 3, return true.
问题:在给定的已排序的二维矩阵中,判断是否包含某个整数。
思路:看到二维数组,首先想到的是二维数组和 一维数组可以直接转换,arr[i][j] 等于 arr[i*col + j]。而在一个已排序的一维数组中搜索一个元素,可以采用分治(Divide and Conquer)思想,更具体些就是二分搜索(Binary Search) 算法。
将上面的结合起来就是,先实现一维数组的二分搜索算法,然后将算法中的一位转换为二维数组即可。
 bool searchMatrix(vector<vector<int>>& matrix, int target) {
     if (matrix.size() == ) {
         return false;
     }
     int col = (int)matrix[].size();
     int row = (int)matrix.size();
     if (col ==  && row == ) {
         return ( matrix[][] == target );
     }
     int lm = ;
     int rm = col * row - ;
     while (lm < rm ) {
         if (lm +  == rm) {
             int quoL = lm / col;
             int remL = lm % col;
             int quoR = rm / col;
             int remR = rm % col;
             if (matrix[quoL][remL] == target || matrix[quoR][remR] == target) {
                 return true;
             }else{
                 return false;
             }
         }
         int midm = (lm + rm) / ;
         int quo = midm / col;
         int rem = midm % col;
         if (matrix[quo][rem] == target) {
             return true;
         }
         if (matrix[quo][rem] < target) {
             lm = midm;
         }else{
             rm = midm;
         }
     }
     return false;
 }
[LeetCode] 74. Search a 2D Matrix 解题思路的更多相关文章
- [LeetCode] 74 Search a 2D Matrix(二分查找)
		二分查找 1.二分查找的时间复杂度分析: 二分查找每次排除掉一半不合适的值,所以对于n个元素的情况来说: 一次二分剩下:n/2 两次:n/4 m次:n/(2^m) 最坏情况是排除到最后一个值之后得到结 ... 
- leetcode 74. Search a 2D Matrix 、240. Search a 2D Matrix II
		74. Search a 2D Matrix 整个二维数组是有序排列的,可以把这个想象成一个有序的一维数组,然后用二分找中间值就好了. 这个时候需要将全部的长度转换为相应的坐标,/col获得x坐标,% ... 
- 【LeetCode】74. Search a 2D Matrix 解题报告(Python & C++)
		作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 左下或者右上开始查找 顺序查找 库函数 日期 题目地 ... 
- [LeetCode] 74. Search a 2D Matrix  搜索一个二维矩阵
		Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ... 
- leetCode 74.Search a 2D Matrix(搜索二维矩阵) 解题思路和方法
		Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ... 
- LeetCode 74. Search a 2D Matrix(搜索二维矩阵)
		Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ... 
- leetcode 74. Search a 2D Matrix
		Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ... 
- [LeetCode] 240. Search a 2D Matrix II 搜索一个二维矩阵 II
		Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ... 
- LeetCode: Search a 2D Matrix  解题报告
		Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matrix. This m ... 
随机推荐
- Linux下通过ODBC连接sqlserver
			Linux下通过ODBC连接sqlserver 1.需求: 最近有个需求就是要在linux下连接(可以执行sql语句)sqlserver 2.环境 操作系统: Centos6.5 数据库: ... 
- PHP AOP
			看到一篇好文,果断收藏 点击打开链接http://www.cnblogs.com/afritxia2008/archive/2010/07/03/1770427.html 
- DIV+CSS 网页布局之:两列布局
			1.宽度自适应两列布局 两列布局可以使用浮动来完成,左列设置左浮动,右列设置右浮动,这样就省的再设置外边距了. 当元素使用了浮动之后,会对周围的元素造成影响,那么就需要清除浮动,通常使用两种方法.可以 ... 
- PHP对URL设置
			一.URL规则 1.默认是区分大小写的 2.如果我们不想区分大小写可以改配置文件 'URL_CASE_INSENSITIVE'=>true, //url不区分 ... 
- 【技巧】DataGridView,ListView重新绑定时保持上次滚动位置
			(1)DataGridView 今天在项目时遇到一个问题,将DataTable绑定到DataGridView,其中一列为CheckBox列,当我修改该列值时,触发CellValueChanged事件. ... 
- DSP:CCS V6 TMS320F2812 使用printf函数
			使用Code Composer Studio Version: 6.1.1.00022,建立TMS320F2812工程. /* * main.c */ #include <stdio.h> ... 
- SQL Server 2012 Features
			SQL SQL Server 2012 新增加的几个函数: SELECT CONVERT (INT, 'Angkor-216.00') 直接报错 SELECT TRY_CONVERT(INT, 'SS ... 
- No Hibernate Session bound to thread, and configuration does not allow creat
			No Hibernate Session bound to thread, and configuration does not allow creat 今天遇到这么一个错误,在网上差了很多都没有能解 ... 
- BZOJ 1620: [Usaco2008 Nov]Time Management 时间管理
			Description Ever the maturing businessman, Farmer John realizes that he must manage his time effecti ... 
- Standford CoreNLP--Sentiment Analysis初探
			Stanford CoreNLP功能之一是Sentiment Analysis(情感分析),可以标识出语句的正面或者负面情绪,包括:Positive,Neutral,Negative三个值. 运行有两 ... 
