剑指offer 二维数组中的查找
2016-06-16 10:51
267 查看
package cn.john.lesson.code; /* * 思路为:首先选取数组中右上角的数字,如果该数字等于要查找的数字,查找过程结束。 如果大于要查找的数字,剔除该数字所在的列。 * 如果小于要查找的数字,剔除该数字所在的行。 循环剔除,直到结束 */ /* * 题目描述 * * * * * 在一个二维数组中,每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 输入描述: array: 待查找的二维数组 target:查找的数字 * * * * * * * * * 输出描述: 查找到返回true,查找不到返回false */ public class Find { public static void main(String[] args) { int[][] newArray = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } }; boolean result = FindNew(newArray, 1); System.out.print(result); } public static boolean FindNew(int[][] array, int target) { boolean flag = false; // 获取二维数组的行 int rows = array.length; // 获取二维数字的列 int columns = array[0].length; if (array != null && rows > 0 && columns > 0) { int row = 0; int column = columns - 1; while (row < rows && column >= 0) { int tempValue = array[row][column]; if (target > tempValue) { ++row; } else if (target < tempValue) { --column; } else { flag = true; break; } } } return flag; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树