【剑指Offer】4.二维数组中的查找

题目

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

[

[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]

]

给定 target = 7,返回 true。

给定 target = 3,返回 false。

数据范围:矩阵的长宽满足 0≤n,m≤500 , 矩阵中的值满足 0≤val≤10^9
进阶:空间复杂度 O(1) ,时间复杂度 O(n+m)

示例1

输入:7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值:true

说明:存在7,返回true

示例2

输入:1,[[2]]

返回值:false

示例3

输入:3,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值:false

说明:不存在3,返回false

解答

源代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param target int整型 
     * @param array int整型二维数组 
     * @return bool布尔型
     */
    public boolean Find (int target, int[][] array) {
        // write code here
        return mySolution(target, array, 0, array[0].length - 1);
    }

    public boolean mySolution (int target, int[][] array, int m, int n) {
        if (m >= array.length || n < 0) {
            return false;
        }

        if (array[m][n] == target) {
            return true;
        }

        if (array[m][n] > target) {
            n--;
        } else {
            m++;
        }

        return mySolution(target, array, m, n);
    }
}

总结

这道题和LeetCode240相同。

题解详见【LeetCode】240.搜索二维矩阵Ⅱ

你可能感兴趣的:(剑指Offer,算法,数据结构,java,二维数组)