剑指office

题目描述

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

代码

package vijos题目;

public class 二维数组中的查找 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        find f = new find();
        f.ss();
    }

}

/*
 * 思路 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增, 因此从左下角开始查找,当要查找数字比左下角数字大时。右移 要查找数字比左下角数字小时,上移
 */
class find {
    int arr[][] = new int[][] { { 1, 2, 3, 53, 56 }, { 2, 5, 6, 59, 66 }, { 54, 56, 97, 100, 120 } };
    int num = 11;

    public void ss() {
        // TODO Auto-generated method stub
        int hang = arr.length - 1;
        int lei = 0;
        while (hang >= 0 && lei <= arr[hang].length) {
            if (arr[hang][lei] > num) {
                hang--;
            } else if (arr[hang][lei] < num) {
                lei++;
            } else {
                System.out.println(arr[hang][lei] + "  " + hang + "  " + lei + "  ture");
                break;
            }

        }
        while (hang <= 0 || lei >= arr[arr.length - 1].length) {
            System.out.println("flase");
            break;
            
        }
    }
}

你可能感兴趣的:(剑指office)