二维数组中的查找

来源:互联网 发布:中信银行淘宝卡 编辑:程序博客网 时间:2024/05/20 03:48

二维数组中的查找

参与人数:3148时间限制:1秒空间限制:32768K
通过比例:19.94%
最佳记录:0 ms|8552K (来自 牛客118039号)
题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


思路:
先把下表定位到第一行最右侧,此时迭代:当目标比数组中数小时列数col减一,当目标数比数组中数大时行数row加一,直到找到目标数return true或触发边界条件colrow超出范围return false。算法时间复杂度为O(col + row)。

class Solution {public:    bool Find(vector<vector<int> > array,int target) {        int i = array.size(), j = array[0].size();        int row = 1, col = j;        int comNum;        while(row <= i && col >= 1) {            comNum = array[row - 1][col - 1];            if(comNum == target){                return true;            }            else if(target < comNum) {                col--;            }            else {                row++;            }        }        return false;    }};
0 0