題目描述
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
解題思路
我們從右上角的那個數開始走,如果給定的數比當前數大,說明要找的數在當前列的下面,所以直接讓行++,如果給定的數比當前數小,說明在當前數的右邊,所以讓列- -,一直循環,一直到數組越界條件觸發還沒有找到,則為沒有
關于本題參數說明
本體參數是一個二維數組
二維數組,先是用一個列數組保存每個行數組的首地址,所以先有列再有行,所以兩個vector里面的代表列,外面的代表行,要想獲取二位數組一行有多少個元素,則直接用外面代表行的vector的大小就行,獲取一列有多少個元素,則直接用里面的vector的大小。
class Solution {
public:bool Find(int target, vector<vector<int> > array) {int row = array.size();//行數int col = array[0].size();//列數int i = 0;int j = col-1;while(i<row&&j>=0){if(target == array[i][j])return true;else if(target > array[i][j])i++;else j--;}return false;}
};