zoukankan      html  css  js  c++  java
  • 剑指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;
        }
    }
  • 相关阅读:
    SharePoint Forums使用
    使用JS隐藏MOSS菜单
    缓存
    异步委托
    一个层动态放大的例子的一些知识点
    petshop之购物车再思考
    设置防止攻击session(疑惑)
    petshop异步和多线程
    Profile在petshop
    一个简单的显示隐藏知识点
  • 原文地址:https://www.cnblogs.com/BaoZiY/p/11165486.html
Copyright © 2011-2022 走看看