第二章 排序 || 第18节 有序矩阵查找练习题

Posted ranjiewen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章 排序 || 第18节 有序矩阵查找练习题相关的知识,希望对你有一定的参考价值。

题目

现在有一个行和列都排好序的矩阵,请设计一个高效算法,快速查找矩阵中是否含有值x。

给定一个int矩阵mat,同时给定矩阵大小nxm及待查找的数x,请返回一个bool值,代表矩阵中是否存在x。所有矩阵中数字及x均为int范围内整数。保证n和m均小于等于1000。
测试样例:

[[1,2,3],[4,5,6],[7,8,9]],3,3,10

返回:false

解析

  • C++版
class Finder {
public:
    bool findX(vector<vector<int> > mat, int n, int m, int x) {
        // write code here
        int col=0;
        int row=n-1;
        while(col<m&&row>=0)
        {
            if(mat[row][col]==x)
                return true;
            else if(mat[row][col]>x)
            {
                row--;
            }
            else 
                col++;
        }
        return false;
    }
};
  • Python版
# -*- coding:utf-8 -*-

class Finder:
    def findX(self, mat, n, m, x):
        # write code here
        row=n-1
        col=0
        while row>=0 and col<m:
            if mat[row][col]==x:
                return True;
            elif mat[row][col]>x:
                row-=1
            else:
                col+=1
        return False

以上是关于第二章 排序 || 第18节 有序矩阵查找练习题的主要内容,如果未能解决你的问题,请参考以下文章

排序练习题:有序矩阵查找

第二章 排序 || 第19节 最短子数组练习题

第2章 排序 || 第15节 有序数组合并练习题

经典排序算法 ——直接插入排序

378. 有序矩阵中第 K 小的元素Normal二分查找

378. 有序矩阵中第K小的元素