1. 程式人生 > >演算法練習--二維陣列中的查詢

演算法練習--二維陣列中的查詢

在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。


提交的程式碼語言:Python執行時間:345ms佔用記憶體:5852K狀態:答案正確
12345678910111213141516# -*- coding:utf-8 -*-class Solution:# array 二維列表def Find(self, target, array):# write code herei=len(array)-1j=len(array[0])-1n=0while n<=j and i>=
0:if target<array[i][n]:i=i-1elif target>array[i][n]:n=n+1else:return Truereturn False

提交的程式碼


語言:C++
執行時間:9ms佔用記憶體:1372K狀態:答案正確
123456789101112131415161718class 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++;elsereturn true;//找到}return false;}};

每次 i n改變以後,會從while的大迴圈從頭開始。
並且不是每次都從行的一頭開始