面试题4:二维数组中的查找

题目要求:
一个二维数组中,每一行从左到右递增,每一列从上到下递增。输入一个整数,判断数组中是否含有该整数

/**
* @since 2019年2月13日 下午5:08:50
* @author xuchao
* 二维数组,从左到右递增,从上到下递增,输入一个整数,判断数组中是否含有
*
* 思路:
* 从最后一行第一列与目标值比较,若大于目标值,则行下标-1;若小于目标值,则列下标+1
*
*/
public class P4_FindInPartiallySortedMatrix { public static boolean findInPartiallySortedMatrix(int[][] data, int target) {
if(data==null || data.length==0 ||data[0].length==0) {
return false;
}
int colMax = data[0].length - 1;
int rowCur = data.length - 1, colCur = 0;
while(true) {
if (rowCur < 0 || colCur > colMax) {
return false;
}
if (data[rowCur][colCur] == target) {
return true;
} else if (data[rowCur][colCur] > target) {
rowCur--;
} else {
colCur++;
}
}
} public static void main(String[] args) {
int[][] data = {
{ 1, 2, 8, 9 },
{ 2, 4, 9, 12 },
{ 4, 7, 10, 13 },
{ 6, 8, 11, 15 } };
System.out.println(findInPartiallySortedMatrix(data, 10));
System.out.println(findInPartiallySortedMatrix(data, 5));
}
}

最新文章

  1. iOS架构一个中型普通App的一些经验总结
  2. 关于QCon2015感想与反思
  3. CMD代码页
  4. Swift开发第一篇——异常处理及断言
  5. eclipse svn异常:RA layer request failed 的解决方案
  6. Android(java)学习笔记97:Scanner类使用
  7. GCD 的使用
  8. 【转载】详细解读C#中的 .NET 弱事件模式
  9. Java多线程:常用的实现多线程的两种方式
  10. 华为 oj 表示数字(代码有参考)理解算法设计
  11. java中自动装箱带来的性能问题
  12. page1
  13. html学习之路--简单图片轮播
  14. 浏览器录宏重放软件-iMacros
  15. Jmeter学习系列----2 录制脚本
  16. PYTHON-迭代器,xxx生成式
  17. javaScript正则表达式的使用
  18. 关于面试总结10-selenium中隐藏元素如何定位?(hidden、display: none)
  19. DELETE语句总结
  20. 使用jQuery异步传递Model到控制器方法,并异步返回错误信息

热门文章

  1. IE的BHO通过IHTMLDocument2接口获得网页源代码
  2. Windows 10 版本信息
  3. asp.net处理请求
  4. 通过异步程序调用(APC)实现的定时功能
  5. Win7和Vista的安全机制对于应用程序读取配置文件相关操作的影响(虚拟重定向技术)
  6. 3013C语言_输入输出
  7. Python socket文件上传下载
  8. gitlab安装笔记三_Centos7安装GitLab
  9. Netty源码分析--创建Channel(三)
  10. Unity Shader 玻璃效果