您的位置:首页 > Web前端

【剑指offer】有序二维数组中的查找

2017-05-11 12:36 495 查看

题目描述

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

public class TestFind {

public static void main(String[] args) {
int[][] array = { { 1, 2, 3, 4, 5 },
{ 2, 2, 3, 4, 5 },
{ 3, 3, 6, 7, 8 },
{ 4, 4, 7, 8, 10 },
{ 5, 5, 8, 9, 11 } };
System.out.println(Find(7, array));
}

/**
* 暴力搜索
*/
public static boolean Find2(int target, int[][] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] == target) {
return true;
}
}
}
return false;
}

/**
* 左下角开始搜索 大则上移,小则右移
*/
public static boolean Find(int target, int[][] array) {
int i = array.length-1;
int j = 0;
while(i >= 0 && j < array[i].length){
if (target > array[i][j]){
System.out.println(target + ">" + "array[" + i + "][" + j + "]=" + array[i][j]);
j++;
}else if (target < array[i][j]){
System.out.println(target + "<" + "array[" + i + "][" + j + "]=" + array[i][j]);
i--;
}else{
System.out.println(target + "=" + "array[" + i + "][" + j + "]=" + array[i][j]);
return true;
}
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 二维数组 查找