leetcode #74 in cpp

原创 2016年06月01日 00:09:25

Solution: 

We could perform 2 binary searches. The first search is to locate the specific row which potentially contains the target. Once we find the row, we perform binary search in the row to find the target. 

Code:

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size();
        int n = matrix[0].size();
        if(target < matrix[0][0] || target > matrix[m-1][n-1]) return false;
        
<span style="white-space:pre">	</span>int lower_row = 0;
        int upper_row = m-1;
        int mid_row;
        //search for the specific row. The row we are looking for has a range that the target could fall in. 
        //That is, the target should be larger than the first number and smaller than the last number in the row.
        while(lower_row <= upper_row){
            mid_row = (lower_row + upper_row) / 2;
            if(matrix[mid_row][0] <= target && matrix[mid_row][n-1] >= target){
                break;
            }
            if(matrix[mid_row][n-1] < target ){
                lower_row = mid_row + 1;
            }
            else{
                upper_row = mid_row - 1;
            }
        }
        if(lower_row > upper_row) return false;//if lower_row > upper_row, this means the specific row is not found, and thus there are no rows with range the target could fall in. We can termiante now. 
        
        int lower_col = 0;
        int upper_col = n - 1;
        int mid_col;
        //binary search through the columns in the row
        while(lower_col <= upper_col){
            mid_col = (lower_col + upper_col) /2;
            if(matrix[mid_row][mid_col] == target) return true;
            if(matrix[mid_row][mid_col] < target){
                lower_col = mid_col + 1;
            }else{
                upper_col = mid_col - 1;
            }
        }
        return false;
    }
};


leetCode练习(74)

题目:Search a 2D Matrix 难度:medium 问题描述: Write an efficient algorithm that searches for a value in...
  • u010771890
  • u010771890
  • 2016年10月16日 11:10
  • 62

【LeetCode-面试算法经典-Java实现】【所有题目目录索引】

【博文总目录>>>】 LeetCode算法题典   LeetCode是一个准备面试非常有用的网站,是非常值得去的地方,里面都是一些经典的面试题,这些题目在Google,Microsof...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月16日 06:27
  • 24807

LeetCode 问题汇总(算法,难度,频率)

Id Question Difficulty Frequency Data Structures Algorithms 1 T...
  • sbitswc
  • sbitswc
  • 2014年03月13日 11:58
  • 12092

[LeetCode刷题笔记] 关于LeetCode的前言

又到了一年毕业就业季了,三年前的校招季我逃避了,可这一次终于还是要轮到我了=_=||。 作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢? LeetCode收录了许多互联网...
  • tostq
  • tostq
  • 2016年07月22日 21:32
  • 3000

leetcode解题总结(持续更新)

树型:DFS或BFS(不够+状态存储,缩短时间)(如数位DP,就是DFS+状态存储) 链表:多用two pointer 无序数组:hash映射(O(1),map,set等),并查集,字典树tire 有...
  • ChinaJane163
  • ChinaJane163
  • 2016年09月21日 20:53
  • 613

[leetcode]--刷leetcode算法目录和算法总结目录

这篇博文是记录所有刷leetcode算法的目录以及全部源码的github地址:所有代码的github地址:https://github.com/leetcode-hust/leetcode/tree/...
  • u010853261
  • u010853261
  • 2017年02月02日 07:54
  • 1014

LeetCode 题目总结/分类

注:此分类仅供大概参考,没有精雕细琢。有不同意见欢迎评论~利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/h...
  • yangliuy
  • yangliuy
  • 2015年03月21日 11:29
  • 7387

leetcode中,代码如何调试,创造本地运行环境

初次接触leetcode,是我在一个招聘网站上看的,这个OJ真有那么厉害吗? 这几天在这个OJ上做了几道题,发现他的几个特点,1、题目不难(相对于ACM来说,我被ACM虐到至今无力),评判没那么苛刻...
  • bg2bkk
  • bg2bkk
  • 2014年07月08日 21:06
  • 6789

Leetcode五大常用算法

Leetcode的5大常用算法
  • x_r_su
  • x_r_su
  • 2016年09月07日 17:30
  • 664

leetcode 刷起!!!!

今天终于开始刷Leetcode了。            开始用的facebook账号登陆的,提示要发送验证邮箱通过验证之后才能在上面跑代码,坑的是,我点了一下,提示发送成功,一分钟邮箱没有...
  • qq_21071767
  • qq_21071767
  • 2015年09月15日 20:25
  • 1066
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode #74 in cpp
举报原因:
原因补充:

(最多只允许输入30个字)