标签:
题目:
这个矩阵具有以下特性:
考虑下列矩阵:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
给出 target = 3
,返回 true
O(log(n) + log(m)) 时间复杂度
解题:
1.最简单的方法就是遍历整个矩阵,时间复杂度:O(log(mn)),这个应该等于O(long(n)+log(m))
2.题目给的矩阵是有序矩阵,先按照最后一列二分查找,确定列,再二分确定行,时间复杂度O(log(m)) + O(log(n)),哦,哦,哦,题目的挑战可能是搞错了。。。
Java程序:
public class Solution { /** * @param matrix, a list of lists of integers * @param target, an integer * @return a boolean, indicate whether matrix contains target */ public boolean searchMatrix(int[][] matrix, int target) { // write your code here 二分查找 if(matrix==null) return false; int m = matrix.length; if(m==0) return false; int n = matrix[0].length; for(int i=0;i<m;i++){ for(int j=0;j<n;j++) if(matrix[i][j]==target) return true; } return false; } }
总耗时: 1571 ms
Python程序:
class Solution: """ @param matrix, a list of lists of integers @param target, an integer @return a boolean, indicate whether matrix contains target """ def searchMatrix(self, matrix, target): # write your code here if matrix==None: return False m = len(matrix) if m==0: return False n = len(matrix[0]) for i in range(m): for j in range(n): if matrix[i][j]==target: return True return False
总耗时: 260 ms
利用二分思想程序:
Java程序:
Python程序:
lintcode 容易题:Search a 2D Matrix 搜索二维矩阵
标签:
原文地址:http://www.cnblogs.com/theskulls/p/4883615.html