1. 程式人生 > >第二章 排序 || 第18節 有序矩陣查找練習題

第二章 排序 || 第18節 有序矩陣查找練習題

|| 練習題 == 給定 一個 同時 urn while pub

題目

現在有一個行和列都排好序的矩陣,請設計一個高效算法,快速查找矩陣中是否含有值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節 有序矩陣查找練習題