[Leetcode]Search a 2D Matrix II

原创 2015年11月19日 14:36:08

Search a 2D Matrix II My Submissions Question
Total Accepted: 19946 Total Submissions: 64757 Difficulty: Medium
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 in ascending from left to right.
Integers in each column are sorted in ascending from top to bottom.
For 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, return true.

Given target = 20, return false.

Subscribe to see which companies asked this question

当时看到这道题 我的想法是这样的,如下代码(p.s 实现的时候遇到了各种细节问题,下面是discuss中的)

class Solution {
public:
    bool search(vector<vector<int>> &matrix,int si,int ei,int sj,int ej,int target){

        if(si>ei || sj>ej || matrix[si][sj] > target || matrix[ei][ej] < target)  return false;
    //si is up side,ei is down side,sj is left side, ej is right side 
        int mi = (si + ei) / 2;
        int mj = (sj + ej) / 2;

        if(matrix[mi][mj] == target)
            return true;
        else if(matrix[mi][mj] < target){
            return search(matrix,si,mi,mj+1,ej,target) ||search(matrix,mi+1,ei,sj,mj,target)||search(matrix,mi+1,ei,mj+1,ej,target);
        }
        else{
            return search(matrix,si,mi-1,mj,ej,target) ||search(matrix,mi,ei,sj,mj-1,target) ||search(matrix,si,mi-1,sj,mj-1,target);
        }
    }
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        if(matrix.empty()) return false;

        return search(matrix,0,matrix.size()-1,0,matrix[0].size()-1,target);
    }
};

后来看到大神写的是这样的。。。

 bool searchMatrix(vector<vector<int>>& matrix, int target) {
    int m = matrix.size(), n = matrix[0].size();
    int i = 0, j = n - 1;

    // search target from up-right side to down-left side
    while (i <= m-1 && j >= 0) {
        if (matrix[i][j] == target)
            return true;
        else if (matrix[i][j] > target)
            --j;
        else // matrix[i][j] < target
            ++i;
    }

    return false;
}

果然还停留在菜鸟水平,做完怀疑了一晚的智商

版权声明:转载请注明出处

Leetcode 240 Search a 2D Matrix II (二分法和分治法解决有序二维数组查找)

1.问题描述  写一个高效的算法,从一个m×nm\times n的整数矩阵中查找出给定的值,矩阵具有如下特点:    每一行从左到右递增。 每一列从上到下递增。 2. 方法与思路2.1 二分查找法 ...
  • Jeanphorn
  • Jeanphorn
  • 2015年07月23日 20:41
  • 3099

Search a 2D Matrix II(搜索一个二维矩阵)

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo...
  • KaJIU
  • KaJIU
  • 2017年03月07日 21:29
  • 111

【LeetCode-面试算法经典-Java实现】【113-Path Sum II(路径和)】

【113-Path Sum II(路径和II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary tree and a sum, find al...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月12日 06:23
  • 2493

LeetCode:Search a 2D Matrix (在元素递增的矩阵中搜寻特定元素)

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo...
  • nlgshw
  • nlgshw
  • 2015年01月30日 09:21
  • 262

第二周算法设计与分析:Search a 2D Matrix II

这周试一下markdown语法 题目来自此处Write an efficient algorithm that searches for a value in an m x n matrix. Thi...
  • qq_20353557
  • qq_20353557
  • 2017年03月03日 16:56
  • 68

leetcode解题之 Search a 2D Matrix java 版(在二维矩阵中查找)

leetcode解题之 74.Search a 2D Matrix java 版(在二维矩阵中查找) ,二分查找,240. Search a 2D Matrix II...
  • mine_song
  • mine_song
  • 2017年04月07日 15:12
  • 185

Search a 2D Matrix 在有序二维矩阵查找数 @LeetCode

经典面试题,从右上角开始查找O(m+n),可以不用二分法 package Level3; /** * Search a 2D Matrix * *Write an efficient a...
  • hellobinfeng
  • hellobinfeng
  • 2013年11月06日 06:12
  • 1731

Search a 2D Matrix(在二维数组中查找)

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo...
  • My_Jobs
  • My_Jobs
  • 2015年03月22日 18:58
  • 896

买卖股票的最佳时机I II III IV

买卖股票的最佳时机I II III IV I假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。II假设有一...
  • u010669349
  • u010669349
  • 2017年12月22日 22:47
  • 31

Leetcode 454. 4Sum II 四数之和2 解题报告

1 解题思想首先,这是一道远古之前的题的进化版: Leetcode #18 4Sum 四数之和 解题小节+K-Sum思想 但是我不想说那个题了,因为我也记不住了。。这道题意思就是ABCD四个数组,长...
  • MebiuW
  • MebiuW
  • 2016年11月16日 22:45
  • 2772
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Leetcode]Search a 2D Matrix II
举报原因:
原因补充:

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