演算法練習--二維陣列中的查詢
阿新 • • 發佈:2019-01-08
在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
提交的程式碼語言:Python執行時間:345ms佔用記憶體:5852K狀態:答案正確
12345678910111213141516 | # -*- coding:utf-8 -*- class Solution: # array 二維列表 def Find( self , target, array): # write code here i = len (array) - 1 j = len (array[ 0 ]) - 1 n = 0 while n< = j and i> = 0 : if target<array[i][n]: i = i - 1 elif target>array[i][n]: n = n + 1 else : return True return False |
提交的程式碼
語言:C++執行時間:9ms佔用記憶體:1372K狀態:答案正確
123456789101112131415161718 | class Solution { public : bool Find( int target, vector<vector< int > > array) { // array是二維陣列,這裡沒做判空操作 int i = array.size()-1; int j = array[0].size()-1; int n=0; while (n<=j && i>=0){ //使其不超出陣列範圍 if (target<array[i][n]) i--; //查詢的元素較少,往上找 else if (target>array[i][n]) n++; else return true ; //找到 } return false ; } }; |
每次 i n改變以後,會從while的大迴圈從頭開始。
並且不是每次都從行的一頭開始