題目:在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
思路:從左下角開始搜尋,如果當前數大於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
public
class
solution
}
return
false
;
}
}
2.另外一種思路是:
利用二維陣列由上到下,由左到右遞增的規律,
那麼選取右上角或者左下角的元素a[row][col]與target進行比較,
當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊,
即col--;
當target大於元素a[row][col]時,那麼target必定在元素a所在列的下邊,
即row++;
public
class
solution
return
false
;
}
}
2.
牛客 劍指offer二維陣列中的查詢
這道題固然可以直接使用暴力法解決,但是這裡就不說暴力法了 對於這道題,我們可以從左下或者右上來遍歷,對於這兩個位置,要麼是行最大列最小,要麼是列最大行最小,所以每次我們將該位置的數與目標值做比較時,就可以往列或行的其中乙個方向移動,以左下為例 當數值 target時,往上移動 當數值暴力法 func...
牛客網 劍指offer 二維陣列查詢(2)
問題描述 給定二維陣列a,陣列中元素遞增,每一行元素按照從左到右遞增,每一列元素按照從上到下遞增。判斷關鍵值在陣列中是否存在 基本思路 陣列中元素有序,按照從小到大排列,依次查詢或者使用二分查詢法 關鍵點 如何將二分查詢應用到二維陣列中 自己的思路 二分查詢需要知道待查詢陣列元素個數,進而調整查詢邊...
牛客網《劍指Offer》程式設計 1 二維陣列中的查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。bool find int target,vector array 1.最先想到的思路是自左向右,自上向下遍歷...