您的位置:首页 > 理论基础 > 数据结构算法

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

2018-03-23 20:43 771 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: