刷題筆記1——有規律的二維陣列找target
阿新 • • 發佈:2018-11-07
題目描述
在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
1、常規思路
當然是萬能的兩重for迴圈了,判斷它是不是等於要查詢的目標就可以了。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int rows = array.size();
int cols = array[0].size();
for(int i = 0; i < rows; ++i ) {
for(int j = 0; j < cols; ++j) {
if(target == array[i][j])
return true;
}
}
return false;
}
};
2、座標系方法
由於題目說明了陣列的每一行從左到右是遞增的,每一列從上到下是遞增的,那是不是和座標系很像呢?
那麼,就這麼找,如果要找的數小於當前的座標值,上移;如果要找的數大於當前的座標值,右移。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int rows = array.size();
int cols = array[0].size();
for(int i = rows - 1, j = 0; i >= 0 && j < cols; ) {
if(target == array[i][j]) {
return true;
} else if (target < array[i][j]) {
i--;
continue;
} else {
j++;
continue;
}
}
return false;
}
};