《劍指offer》二維陣列的查詢

2021-08-28 12:10:06 字數 1038 閱讀 4900

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

定義乙個這樣的陣列:

比如查詢數字7,我們先用右上角的數字進行比較,7<10,說明7在10這列的左邊,因此剔除掉最後一列

然後再從右上角開始比較,7<9,再剔除最後一列

再用2<7,因此7一定在2的下面或者右邊。又因為2後面的兩列已被剔除,只能向下找。因此範圍只剩下:

以此推類。

**:

#includebool find(int *arr, int row, int col, int data)

else if (arr[col*row + col]>data)//右上角大於data,要剔除最後一列

else

} } return false;bool

}int main()

; int data = 0;

int row = 3;

int col = 3;

printf("請輸入你要查詢的數字:");

scanf_s("&data");

int ret=find(arr, row, col, data);

if (ret == 1)

else if (ret==0)

system("pause");

return 0;

}

今天,衝鴨

二維陣列查詢(劍指offer)

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解法一 因為每一行都是遞增的,直接對每一行進行二分查詢即可。public class solution if ...

劍指offer 二維陣列的查詢

題目描述 書中第三題 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution return false 要自己處理輸入的版本 public sta...

劍指Offer 二維陣列的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路 題目給定二維陣列按行遞增,按列遞增。1.錯誤 有一種很自然的想法就是分別按行和列定位,細想一下這是不行的 例如按行定位時,...