2.二维数组中的查找
题目: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 我的解法: 暴力的两次循环: class Solution { public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { for(int i = 0; i < matrix.size(); ++ i) { for(int j = 0; j < matrix[i].size(); ++ j) { if(matrix[i][j] == target) return true; } } return false; } }; 时间复杂度 为O(M*N) 非最优解。 空间复杂度为O(1) 解法摘录: 1. 本题解利用矩阵特点引入标志数,并通过标志数性质降低算法时间复杂度。 标志数引入: 此类矩阵中左下角和右上角元素有特殊性,称为标志数。 左下角元素: 为所在列最大元素