劍指offer程式設計題(二) 查詢二維陣列中的某個數

2021-08-21 13:27:08 字數 779 閱讀 1680

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

因為一維有序陣列可以用二分法查詢,所以這道題剛開始就像用二分法找二維陣列。

然而,對於二維陣列,特徵最明顯的資料是四個角的資料。左上角最小,右下角最大。左下角比該列其他元素都大,比該行其他元素都小。右上角比該行其他元素都大,比該列其他元素都小。所以對於右上角和左下角的資料,其實就是二維陣列的二分元素而且,與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...