面试题3 二维数组中的查找 java实现
2015-05-19 20:30
519 查看
题目:在一个二维数组中每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。完成一个函数,输入这样的数组和一个整数,判断数组中是否含有该整数。
思路:由于该二维数组从左到右,从上到下均为顺序递增的。因此右下角与左上角的数字均大于或小于其周围数字,如果选择改组作为起始点,则无法确定下一步的方向。而右上角的数字是同行最大值、同列最小值,选择该点为起始点则可以根据该数子与目标的比较确定下一步是向右移还是向下移,同理选择左下角也可以实现该函数。
这里选择右上角为起始点。public class ArrayFind {
private static int[][] A;
private static int[][] initArray() {
int[][] A = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 },
{ 6, 8, 11, 15 } };
return A;
}
private static void find(int target) {
boolean found=false;
if (A != null) {
int row =0;
int column = A[0].length-1;
int key;
while (row < A.length && column >= 0) {
key = A[row][column];
System.out.println("now key="+key);
if (key == target) {
found=true;
break;
} else if (key < target) {
++row;
} else {
--column;
}
}
if(found){
System.out.println("find the targe "+target+" in :" + row + ","
+ column + "!");
}
else{
System.out.println("Sorry not found!");
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A=initArray();
find(14);
}
}
思路:由于该二维数组从左到右,从上到下均为顺序递增的。因此右下角与左上角的数字均大于或小于其周围数字,如果选择改组作为起始点,则无法确定下一步的方向。而右上角的数字是同行最大值、同列最小值,选择该点为起始点则可以根据该数子与目标的比较确定下一步是向右移还是向下移,同理选择左下角也可以实现该函数。
这里选择右上角为起始点。public class ArrayFind {
private static int[][] A;
private static int[][] initArray() {
int[][] A = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 },
{ 6, 8, 11, 15 } };
return A;
}
private static void find(int target) {
boolean found=false;
if (A != null) {
int row =0;
int column = A[0].length-1;
int key;
while (row < A.length && column >= 0) {
key = A[row][column];
System.out.println("now key="+key);
if (key == target) {
found=true;
break;
} else if (key < target) {
++row;
} else {
--column;
}
}
if(found){
System.out.println("find the targe "+target+" in :" + row + ","
+ column + "!");
}
else{
System.out.println("Sorry not found!");
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A=initArray();
find(14);
}
}
相关文章推荐
- 剑指offer--面试题3:二维数组的查找--Java实现
- 剑指offer面试题3:二维数组中的查找 java实现
- 剑指Offer:面试题3——二维数组中的查找(java实现)
- 剑指Offer面试题3:二维数组的查找 Java实现
- 剑指offer面试题3—二维数组中的查找(Java实现)
- 剑指offer编程题Java实现——面试题3二维数组中的查找
- 剑指offer|面试题3:二维数组中的查找(Java实现)
- 剑指offer面试题3 二维数组的查找(java实现)
- 二维数组中的查找java实现
- 剑指offer之第一题 二维数组中查找 Java实现
- 题目一:使用Java实现二维数组中的查找
- 剑指offer面试题4 - 二维数组的查找 java
- 剑指offer算法 java实现 二维数组中的查找
- 二维数组中的查找(java实现)
- 剑指Offer——面试题3:二维数组中的查找(Java)
- JAVA实现二维数组中的查找(《剑指offer》)
- 剑指offer--二维数组中的查找 java实现
- 《剑指offer》编程题java实现(一):二维数组的查找
- 【剑指offer——JAVA实现】二维数组中的查找
- 面试题:Java 实现查找旋转数组的最小数字