Unity擴充套件 AssetBundle 增量式打包
阿新 • • 發佈:2020-12-05
二維陣列中的查詢
思路
- 暴力求解,遍歷m行n列所有元素,一致返回 true,否則返回 false
- 將二維數陣列逆時針旋轉45°,從右上角開始,就像二叉樹的查詢,大的在左分支,小的在右分支
- 與方法2類似,只不過是從左下角開始查詢
C++實現
方法一
class Solution { public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { //這個是考慮輸入是否為空,在牛客上不需要考慮,但是在leetcode上需要考慮 if(matrix.size()==0) return false; int rol = matrix.size(); int col=matrix[0].size(); for(int i = 0;i < rol;++i) { for(int j = 0;j < col;++j) { if(matrix[i][j] == target) return true; } } return false; } };
方法二
class Solution { public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { //這個是考慮輸入是否為空,在牛客上不需要考慮,但是在leetcode上需要考慮 if (matrix.size() == 0) return false; int i = 0, j = matrix[0].size()-1; while(i <= matrix.size()-1 && j>=0 ) { if( matrix[i][j] > target) j--; else if (matrix[i][j] < target) i++; else return true; } return false; } };
方法三
class Solution { public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if (matrix.size() == 0) return false; int i = matrix.size()-1, j = 0; while(i >= 0 && j< matrix[0].size()) { if( matrix[i][j] > target) i--; else if (matrix[i][j] < target) j++; else return true; } return false; } };
Python實現
方法一
class Solution:
def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
if len(matrix) == 0:
return False
for i in range(len(matrix)):
for j in range (len(matrix[0])):
if matrix[i][j] == target:
return True
return False
方法二
class Solution:
def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
if len(matrix) == 0:
return False
j, i = len(matrix[0])-1, 0
while i < len(matrix) and j >= 0:
if matrix[i][j] > target:
j-=1
elif matrix[i][j] < target:
i+=1
else:
return True
return False
方法三
class Solution:
def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
if len(matrix) == 0:
return False
j,i = 0, len(matrix)-1
while i >= 0 and j < len(matrix[0]):
if matrix[i][j] > target:
i-=1
elif matrix[i][j] < target:
j+=1
else:
return True
return False
參考文獻
二維陣列中的查詢(標誌數,清晰圖解)