剑指offer 二维数组中的查找

剑指offer 二维数组中的查找

  • 题目描述

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

  • C++解法

题意简单明了,但是刚开始想的时候没有特别清晰的思路,导致走了一些弯路。吃了个晚饭散散步回来删掉之前写的理清思路重新开始,其实真的挺简单的。

刚开始将元素定位到矩阵的右上角,然后根据和target的比较结果来进行行的增加和列的减少,直到找到target,否则返回false。

其实想了想,初始元素也可以定位在矩阵的左下角,是一样的道理。

占用时间:0ms,占用内存:8552k

class Solution {
public:
	bool Find(vector<vector<int> > array, int target) {
		int row = array.size();
		int col = array[0].size();

		if (row==0 || col==0 || target<array[0][0])
			return false;

		int i = 0, j = col-1;
		while (i < row && j >= 0){
			if (array[i][j] == target)
				return true;
			else if (array[i][j]>target){
				j--;
			}
			else if (array[i][j] < target){
				i++;
			}
		}

		return false;
	}
};
弹钢琴的猫 /
Published under (CC) BY-NC-SA in categories 算法  tagged with 剑指offer  Array