劍指offer 二維陣列中的查詢

2022-08-17 20:45:08 字數 783 閱讀 4009

目錄題目鏈結

劍指offer:二維陣列中的查詢

題目描述

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

1. 二分法

因為只能逐行進行二分,故演算法時間複雜度為o(nlogm),n為矩陣行數,m為列數。

計算二分的中值mid時,推薦使用mid = (right - left) / 2 + left而不是mid = (left + right) / 2,這樣能夠避免加法溢位

class solution  else if (array[i][mid] > target)  else }}

return false;

}};

2. 利用元素特殊的排列

利用元素排列的性質,對於左下角的元素來說,其同列上方的元素一定是小於它,其同行右方的元素一定是大於它;能夠在推導的過程中跳過更多的錯誤元素。易知,演算法時間複雜度為o(n+m)

class solution  else if (target > array[i][j])  else 

}return false;

}};

劍指offer 二維陣列中查詢

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

劍指offer 二維陣列中查詢

從今天開始每天一題,除了節假日。在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution return false class solut...

劍指offer 二維陣列中查詢

要求如下 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數 示例如下 7,1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 思路有三種,...