剑指Offer——二维数组中的查找

Posted baoziy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer——二维数组中的查找相关的知识,希望对你有一定的参考价值。

1、题目描述:

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

2、代码实现:

package com.baozi.offer;

/**
 * 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,
 * 每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,
 * 判断数组中是否含有该整数。
 *
 * @author BaoZi
 * @create 2019-07-10-17:11
 */
public class Offer 
    public static void main(String[] args) 
        int[][] array = new int[][]1, 2, 8, 9, 2, 4, 9, 12, 4, 7, 10, 13, 6, 8, 11, 15;
        Offer offer = new Offer();
        boolean result = offer.Find(5, array);
        System.out.println(result);

    

    public boolean Find(int target, int[][] array) 
        //先判断给定的二维数组是否是空
        if (array == null || array.length == 0) 
            return false;
        
        //定义两个指针,根据数组的特点在对指针进行初始化的时候先指向数组的左上角的位置
        int i = 0;
        int j = array[0].length - 1;
        while (i <= array.length - 1 && j >= 0) 
            //如果当前的指针指向的数组元素和目标元素一直,证明二维数组中存在待查找元素
            if (array[i][j] == target) 
                return true;
                //如果当前指针指向的数组元素比目标元素值大,那么目标元素如果存在的化一定是在当前元素的前一列
             else if (array[i][j] > target) 
                j--;
                //如果当前指针指向的数组元素比目标元素值小,那么目标元素如果存在的化一定是在当前元素的下一行
             else 
                i++;
            
        
        return false;
    

 

以上是关于剑指Offer——二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer 04. 二维数组中的查找

剑指Offer 04. 二维数组中的查找

剑指offer经典题目一:二维数组中的查找

剑指 Offer(第 2 版)刷题 | 04. 二维数组中的查找

[剑指Offer]5.二维数组中的查找

[剑指Offer] 二维数组中的查找