牛客《劍指Offer》 二維陣列中的查詢

2021-08-03 06:21:39 字數 1310 閱讀 8820

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

思路:從左下角開始搜尋,如果當前數大於target ,向下移動,如果當前數小於target ,向後移動。

class solution 

else if(array[tmprow][tmpcol] == target)

else if(array[tmprow][tmpcol] < target)

else}}

};

code

class solution 

return false;

}};

論壇思路:2種

1.把每一行看成有序遞增的陣列,

利用二分查詢,

通過遍歷每一行得到答案,

時間複雜度是nlogn

publicclasssolution

}

returnfalse;

}

}

2.另外一種思路是:

利用二維陣列由上到下,由左到右遞增的規律,

那麼選取右上角或者左下角的元素a[row][col]與target進行比較,

當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊,

即col--;

當target大於元素a[row][col]時,那麼target必定在元素a所在列的下邊,

即row++;

publicclasssolution

returnfalse;

}

}

2.

牛客 劍指offer二維陣列中的查詢

這道題固然可以直接使用暴力法解決,但是這裡就不說暴力法了 對於這道題,我們可以從左下或者右上來遍歷,對於這兩個位置,要麼是行最大列最小,要麼是列最大行最小,所以每次我們將該位置的數與目標值做比較時,就可以往列或行的其中乙個方向移動,以左下為例 當數值 target時,往上移動 當數值暴力法 func...

牛客網 劍指offer 二維陣列查詢(2)

問題描述 給定二維陣列a,陣列中元素遞增,每一行元素按照從左到右遞增,每一列元素按照從上到下遞增。判斷關鍵值在陣列中是否存在 基本思路 陣列中元素有序,按照從小到大排列,依次查詢或者使用二分查詢法 關鍵點 如何將二分查詢應用到二維陣列中 自己的思路 二分查詢需要知道待查詢陣列元素個數,進而調整查詢邊...

牛客網《劍指Offer》程式設計 1 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。bool find int target,vector array 1.最先想到的思路是自左向右,自上向下遍歷...