题目描述

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

一 . 解题思路

该题目有两个重要条件!该数组从左到右以及从上到下均为递增,这样我们可以在右上或者左下下手,为什么不是左上或者右下呢,因为这两个点是极限点,看下面的图差不多应该好懂一些吧!下图是以右上为开始点干的。。

也就是说,我们要查找的这个数,从右上开始一个个的去尝试。

如果这个数等于右上角的数,则返回正确。

如果这个数大于右上角的数,那么直接删除这一行,因为这一行中,最大的就是右面的那个了,所以呢,接下来,只需要考虑处了这一行以外的数了。

如果这个数小于右上角的数,那么直接删除这一列,道理同上!

如果不是第一种情况,删除一行或者一列后,那么接下来呢,再次选择右上角的点,继续执行上述工作。

二 . 代码实现

class Solution
{
public bool Find(int target, int[][] array)
{
//把参考的数定义到右上角
int row=;
int col=array[].Length-;
//循环操作过程
while(row<=array.Length-&&col>=)
{
//若相等,则返回正确
if(target==array[row][col])
{
return true;
}
//若大于,则把row+1,即相当于删除了那一行
else if(target>array[row][col])
{
row++;
}
//否则,col-1,相当于删除了最右面的列
else
{
col--;
}
}
//如果执行结束了,还没查到,那就是没有!!
return false;
}
}

最新文章

  1. EasyUI datagrid 行编辑
  2. asp.net保存网上图片到服务器
  3. [原]Unity3D深入浅出 - 天空盒(Skyboxes)
  4. svn操作
  5. The given object has a null identifier解决之法
  6. python把汉字转换成拼音实现程序
  7. 简化日常工作之三:自己写一个CI脚手架
  8. J2EE struts2MVC应用在线书签1
  9. 虚拟机kali找不到无线网卡、搜不到无线网络
  10. Mybatis 动态使用update语句
  11. scrapy爬取中关村在线手机频道
  12. 创建ndarray
  13. Git 教程(二):提交和回退
  14. python-文件锁
  15. IE9样式错乱,IE11无法正常加载v-loading等问题 引入了babel-polyfill插件,依然出现”polyfill-eventsource added missing EventSource to window”的奇怪问题(ie所有版本都有出现)
  16. append、appendTo、prepend、prependTo、before、insertBefore、after、insertAfter、replaceAll方法被调用后,原本在页面上显示的元素会消失
  17. ALGO-11_蓝桥杯_算法训练_瓷砖铺放(递归)
  18. redis for lack of backlog
  19. Android中实现activity的页面跳转并传值
  20. bit,Byte,Word,DWORD(DOUBLE WORD,DW)

热门文章

  1. Spring Boot2.0之web开发
  2. python日期格式化符号
  3. FastJson 输出值 首字母大小写问题
  4. Ubuntu 更新/安装nodejs
  5. Hive- Hive Web Interface
  6. python3 - 商品管理的程序,商品信息都存在一个json串里面
  7. css设置文件编码
  8. C#多线程编程介绍——使用thread、threadpool、timer
  9. java对象的初始化过程和创建对象的几种方式
  10. 【POJ 3580】SuperMemo Splay