题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 
注意:
 数组不一定是这样的:
  1  2  3  
  4  5  6
  7  8  9
  而是这样的:
  1  2  8  9
  2  4  9  12
  4  7  10  13
  6  8  11  15
 
一下给出两种方法:
笨方法:
  从数组左上角开始查找,若target比自己大且比右边的数小,或者比最右边列的数大,则应向下查找,
  但到达下一行,可能比该数大,则应向改行的右边找,或比该数小,则向左找,这样导致代码判断繁琐
 
优化:
  不要只会从左上角的数开始查找,观察数组之后,我们发现,每个数的右下方的数一定比自己大
  那么就从右上角开始查找,target比自己小时,则向右查找,否则向下查找,这样么每次移动只考虑向左或向右,逻辑简单明了
 
 class Solution {
public:
bool Find(int target, vector<vector<int>> array) {
int px = array.size(), py = array[].size();
if (px== || py == ||target<array[][] || target>array[px - ][py - ])return false;
for (int x = , y = ; y < py && x < px &&y >= && x>=;)
{
if (target == array[x][y])return true;
else if ((y == py- && target > array[x][y])||(y < py - && target < array[x][y + ] && target > array[x][y]))
++x;
else if (target < array[x][y])
--y;
else
y++;
}
return false;
}
};
 class Solution {
public:
bool Find(int target, vector<vector<int>> array) {
int px = array.size(), py = array[].size();
if (target<array[][] || target>array[px - ][py - ])return false;
int x = , y = py - ;
while (x < px && y >= )
{
if (target == array[x][y])return true;
else if (target > array[x][y]) ++x;
else if (target < array[x][y]) --y;
}
return false;
}
};

最新文章

  1. JS的内建函数reduce
  2. 批处理命令 BAT备份MySQL数据库
  3. HDU 1875 畅通工程再续 (prim最小生成树)
  4. 【BZOJ】1084: [SCOI2005]最大子矩阵(DP)
  5. 二十四种设计模式:原型模式(Prototype Pattern)
  6. spring quartz 多次调用
  7. 利用python进行数据分析之数据加载存储与文件格式
  8. AT24C02使用详解
  9. [转载] MapReduce工作原理讲解
  10. jQuery 效果函数(三)
  11. vue 双向数据绑定的实现学习(二)- 监听器的实现
  12. Http 调用netty 服务,服务调用客户端,伪同步响应.ProtoBuf 解决粘包,半包问题.
  13. Linux 目录说解
  14. MVC母版页_Layout.cshtml
  15. VB 共享软件防破解设计技术初探(二)
  16. FFMPEG的函数翻译文档
  17. 修改IP的批处理
  18. for-in 的坑
  19. mysql 游标CURSOR
  20. POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法)

热门文章

  1. flink详细介绍
  2. NX二次开发-BlockUI的Tree树控件
  3. Ajax请求参数为文件类型
  4. ASP.NET Core学习——1
  5. ajax 重复提交
  6. qemu的动态翻译机制
  7. Python 操作excel常见异常
  8. C# 简单的往txt中写日志,调试时很有用
  9. ArcGis基础——Excel表格插入ArcMap布局视图,记录显示不全的替代解决方法
  10. 基于OpenResty与Consul实现服务网格ServiceMesh