#数据结构与算法学习笔记#剑指Offer1.5:二维数组中的查找(C++)

2018.3.23

JAVA实现之后再学习一下C++写法

本题算法JAVA实现传送门

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

#include "stdafx.h"


/*
最佳解法:
利用二维数组由上到下,由左到右递增的规律,
那么选取右上角或者左下角的元素a[row][col]与target进行比较,
当target小于元素a[row][col]时,那么target必定在元素a所在行的左边,即col--;
当target大于元素a[row][col]时,那么target必定在元素a所在列的下边,即row++;
*/
# if 0

class Solution{
public:
	bool Find(int target, vector<vector<int>> array){
		if (array.empty())	return false;		//养成进门判定的好习惯
		int _length = array.size();

		for (int i = 0; i < _length; i++){
			if (array[i].empty())continue;		//判定数组空好习惯
			else if (target >= array[i][0]){
				if(target <= array[i][array[i].size() - 1]){
					for (int j = array[i].size()-1 ; j >= 0; j--)
					{
						if (target == array[i][j])return true;
						else if (target > array[i][j])break;
					}
				}
				else{
					continue;
				}
			}
			else{
				return false;
			}
		}
		return false;
	}
};

#endif

猜你喜欢

转载自blog.csdn.net/qq_20304723/article/details/79672433