劍指offer第1題
阿新 • • 發佈:2019-01-05
Q:在一個二維陣列中,每一行都按照從左到右遞增順序排序,每一列都按照從上到下遞增排序。完整一個函式,輸入這樣二維陣列和一個整數,判斷陣列中是否含這個整數。
思路一:
/* 矩陣是有序的,從左下角來看,向上數字遞減,向右數字遞增,* 因此從左下角開始查詢,當要查詢數字比左下角數字大時。右移* 要查詢數字比左下角數字小時,上移*/
時間複雜度為O(m+n)
class Solution { public: bool Find(vector<vector<int> > array,int target) { int rowCount = array.size(); int colCount = array[0].size(); int i,j; for(i=rowCount-1,j=0;i>=0&&j<colCount;) { if(target == array[i][j]) return true; if(target < array[i][j]) { i--; continue; } if(target > array[i][j]) { j++; continue; } } return false; } };
思路二:
每行進行二分查詢,時間複雜度為O(mlogn)