题解 | #二维数组中的查找#

二维数组中的查找

http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

  • 由于数组每行递增、每列递增,所以查找从右上方开始,向左向下移动,判断当前值与目标值的大小关系
  • 时间复杂度O(m+n),m为行数,n为列数
  • 空间复杂度O(1)
class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        int i = 0, j = array[0].size() - 1;
        while(i < array.size() && j >= 0){ 
            if(array[i][j] == target){
                return true;
            }else if(array[i][j] < target){//目标值比当前值大时,说明目标值只可能出现在当前值的下方
                i++;
            }else if(array[i][j] > target){//目标值比当前值小时,说明目标值只可能出现在当前值的左方
                j--;
            }
            
        }
        return false;//扫描超出数组范围时,说明目标值不存在
    }
};
全部评论

相关推荐

黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写会更好
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务