在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
因為一維有序陣列可以用二分法查詢,所以這道題剛開始就像用二分法找二維陣列。
然而,對於二維陣列,特徵最明顯的資料是四個角的資料。左上角最小,右下角最大。左下角比該列其他元素都大,比該行其他元素都小。右上角比該行其他元素都大,比該列其他元素都小。所以對於右上角和左下角的資料,其實就是二維陣列的二分元素而且,與target比較後,就是刪除該行或該列,剩下的圖形依然是矩形。而其他的元素,比如對角線上的資料,它只有作為以它為右下角元素時,它時最大的的這個特徵,每次判斷後,不能排除規則的、簡單的行或列。
class solution:
# array 二維列表
def find(self, target, array):
row=len(array)
line=len(array[0])
var_row=0
var_line=line-1
while(var_row=0):
if target==array[var_row][var_line]:
return true
elif target>array[var_row][var_line]:
var_row+=1
elif targetvar_line-=1
return false
《劍指offer》二維陣列題
本文完全自己學習記錄,以便將來回顧 未排版 思路 從最後一列的首行開始與number比較 比如上圖中的數字9 若大於該number,則此列可跳過,繼續比較前面一列首行數字,若大於number繼續上一步,若小於,則看此列下一行數字,若找到則true,若此列遇到大於number的數字,還未找到numbe...
二維陣列查詢(劍指offer)
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解法一 因為每一行都是遞增的,直接對每一行進行二分查詢即可。public class solution if ...
劍指offer程式設計 二維陣列的查詢
題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。package myworking public class arrayfind public static boolean f...