二維數組的查找程序員
在一個二維數組中(每一個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。面試
題目要求中能夠發現有兩個突破口:
1.從行看,從左往右依次遞增正則表達式
(1)當咱們從第一行第一個元素開始比較的時候,會發現不管是往右仍是往下都是遞增,比較沒有意義
(2)故從第一行最後一個元素進行比較時候咱們發現,小於時往左走,大於時候往下走。算法
圖例(4*4的二維數組):
數組
def Find(target, array): # write code here if array==[]: return False LieShu=len(array[0]) HangShu=len(array) i=0 j=LieShu - 1 while i < HangShu and j >= 0: if target < array[i][j]: j-=1 elif target > array[i][j]: i+=1 else: return True return Fals
class Solution { public: bool Find(int target, vector<vector<int> > array) { int row = array.size(); int col = array[0].size(); for(int i=0;i<row;i++){ for(int j=0;j<col;j++) { if(target==array[i][j]) { return true; } } } return false; } };
public boolean find(int[][] array,int target) { if (array == null) { return false; } int row = 0; int column = array[0].length-1; while (row < array.length && column >= 0) { if(array[row][column] == target) { return true; } if(array[row][column] > target) { column--; } else { row++; } } return false; }
注:面試季來了,無論是做爲面試者仍是之後做爲面試官,瞭解算法這門程序員之間的溝通方式都是很是必要的。找過工做的朋友應該都據說過《劍指offer》,雖然書中只有六十多道題目,可是道道都是經典。微信
若是是單純的面試需求,劍指offer的優先級確定是在Leetcode以前,總的說它有三個優勢:數據結構
它的缺點是:機器學習
劍指offer刷題交流羣ide
掃碼添加微信,必定要備註研究方向+地點+學校+暱稱(如機器學習+上海+上交+湯姆)函數
▲長按加羣
The End
▼往期精彩回顧▼CNN+BLSTM+CTC的驗證碼識別從訓練到部署機器學習算法(一) | Adaboost算法詳解Tensorflow 3w+star例子帶你學重磅|pytorch實現CS224N模型