[剑指Offer]5.二维数组中的查找

简介:

题目

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路

[算法系列之三十三]杨氏矩阵

代码

/*---------------------------------------
*   日期:2015-07-19
*   作者:SJF0115
*   题目: 5.二维数组中的查找
*   网址:http://www.nowcoder.com/books/coding-interviews/abc3fe2ce8e146608e868a70efebf62e?rp=1
*   结果:AC
*   来源:剑指Offer
*   博客:
-----------------------------------------*/
#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    bool Find(vector<vector<int> > array,int target) {
        int row = array.size();
        if(row == 0){
            return false;
        }//if
        int col = array[0].size();
        if(col == 0){
            return false;
        }//if
        int i = 0,j = col - 1;
        while(i < row && j >= 0){
            // 大于目标 剔除这个数字所在的列
            if(array[i][j] > target){
                --j;
            }//if
            // 小于目标 剔除这个数字所在的行
            else if(array[i][j] < target){
                ++i;
            }//else
            else{
                return true;
            }//else
        }//while
        return false;
    }
};

int main(){
    Solution s;
    vector<vector<int> > 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}
        };
    int target = 30;
    cout<<s.Find(matrix,target)<<endl;
    return 0;
}
目录
相关文章
|
8月前
|
Java
【剑指offer】-二维数组的查找-01/67
【剑指offer】-二维数组的查找-01/67
|
8月前
|
Java
每日一题《剑指offer》数组篇之二维数组中的查找
每日一题《剑指offer》数组篇之二维数组中的查找
59 0
|
8月前
|
算法
牛客网-二维数组的查找
牛客网-二维数组的查找
56 0
|
8月前
LeetCode(面试题:二维数组中的查找)
LeetCode(面试题:二维数组中的查找)
43 0
剑指offer-3.二维数组的查找
剑指offer-3.二维数组的查找
34 0
剑指Offer04二维数组中的查找
剑指Offer04二维数组中的查找
剑指offer 03. 二维数组中的查找
剑指offer 03. 二维数组中的查找
66 0
剑指offer_数组---二维数组中的查找
剑指offer_数组---二维数组中的查找
66 0
剑指offer_数组---数组中的逆序对
剑指offer_数组---数组中的逆序对
54 0