《劍指Offer》——二維陣列中的查詢
阿新 • • 發佈:2019-01-14
題目描述
在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
#include<cstdio> #include<cstdlib> #include<vector> #include<iostream> using namespace std; /* * Created by HarvestWu on 2019/01/14. /* 矩陣有序,從左下角開始,向上遞減,向右遞增; 從左下角開始查詢,當要查詢數字比左下角數字大時,右移; 要查詢數字比左下角數字小時,上移。 */ class Solution { public: bool Find(int target, vector<vector<int> > array) { int rowNum = array.size(); int colNum = array[0].size(); int i, j; for (i = rowNum - 1, j = 0; i >= 0 && j < colNum;){ if (target<array[i][j]) i--; else if (target>array[i][j]) j++; else return true; } return false; } }; int main(){ vector<vector<int>> array(5, vector<int>(5)); int a = 0, b; for (int i = 0; i < 5; i++){ b = a; for (int j = 0; j < 5; j++){ array[i][j] = b++; } a++; } Solution s; cout << s.Find(45, array) << endl; return 0; }