二維陣列中的查詢

2022-11-24 20:16:16 字數 1232 閱讀 2803

題目:在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。輸入一個整數key,判斷二維陣列中是否含有該整數。

分析:例如有如下二維陣列,習慣上,可能我們會從二維陣列第1個元素下手,判斷其是否等於key,若第1個元素小於key,則再判斷下面紅色整數部分(加粗部分判斷重疊部分):

1   2   3   5

45   8   12

812  14  21

如果按照上面的方式查詢,則每個元素的判斷都會有重複判斷的區域,問題變得更加複雜。

我們可以觀察一下陣列的規律:陣列從左到右,從上到下都是遞增的,左上角(右下角的元素也同理)的整數處於當前行、列的最小值,除非該元素就是key或者大於key(查詢失敗),否則每次查詢都沒辦法捨棄某行或某列,只能排除一個元素。而如果我們從右上角的元素出發,該元素是行的最大值,列的最小值,我們可以利用這個性質使每次查詢都排除一行或一列(該元素大於key排除列,小於key排除行)。

以下是演算法實現**(從右上角元素開始判斷):

1

package

com.yyl.arithmetic.array;23

public

class

twodimensionsearch else

if(array[i][j] 19print(array, i, j, row);20}

21}22return

false;23

}2425public

static

void print(int array, int row, int column, int

rowcount)

31system.out.println();32}

33system.out.println();34}

3536

public

static

void

main(string args) , , };

38 system.out.println(find(array, 8));39}

40 }

輸出結果:

1 2 3 5 

4 5 8 12

8 12 14 21

4 5 8 12

8 12 14 21

4 5 8

8 12 14

true

WPF中的Binding技巧(二)

接上篇,我們來看一看elementname,source,relativesource 三種繫結的方式 1.elementname顧名思義就是根據ui元素的name來進行繫結 例子 mainwindow,path background 效果等同於 區別 elementname屬性用於引用一個ui物件...

ios 中的構造方法 二

在之前有簡單介紹了構造方法的結構,以及構造方法的作用,那麼我們現在來討論一下 物件的建立分為兩步 alloc 分配記憶體空間和 init 進行初始化 那麼在繼承自 nsobject 的類當中,我們無論怎麼測試,物件不呼叫 init 方法,仍舊是可以進行初始化的.同時,無論怎麼使用,是沒有任務問題的,...

hibernate中的二級快取

二級快取使用場景 不經常修改的資料,但是經常的訪問的資料會放到快取中去 一級快取僅僅是session內部的快取,用來存取sql語句,比如說連續呼叫兩次相同引數的get方法,就是session快取 二級快取是sessiionfactory層面的快取,即不同執行緒,不同程式之間的快取 1.在hibern...