zoukankan      html  css  js  c++  java
  • 6-二维数组中的查找

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

    思路:该二维数组中的某一个数,小于它的数一定在它的左边,大于它的数一定在它的下面。所以可以从右上角开始查找。

    • 代码如下
     3 /*
     4 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,
     5 每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     6 */
     7 public class Demo5 {
     8 
     9     public static void main(String[] args) {
    10         
    11         //定义一个二维数组
    12         int[][] arr = new int[][]{{1,   4,  7, 11, 15},
    13                               {2,   5,  8, 12, 19},
    14                               {3,   6,  9, 16, 22},
    15                               {10, 13, 14, 17, 24},
    16                               {18, 21, 23, 26, 30}};
    17         printArray(arr);
    18         
    19         boolean find = Find(20, arr);
    20         System.out.println(find);
    21     }
    22     
    23     /**
    24      * 判断数组中是否有指定的数
    25      * @param target  目标数
    26      * @param array   传入此方法的二维数组
    27      * @return
    28      */
    29      public static boolean Find(int target, int [][] array) {
    30          if(array == null || array.length == 0 || array[0].length == 0){
    31              return false;
    32          }
    33          
    34          int row = array.length;
    35          int col = array[0].length;
    36          //找到二维数组右上角的坐标值
    37          int r = 0;
    38          int c = col-1;
    39          
    40          while(r < row-1 && c >=0){
    41              if(target == array[r][c]){
    42                  return true;
    43              }else if(target > array[r][c]){
    44                  r++;
    45              }else{
    46                  c--;
    47              }
    48          }
    49          return false;
    50      }
    51 
    52     /**
    53      * 打印二维数组
    54      * @param arr
    55      */
    56     public static void printArray(int[][] arr) {
    57         for (int i = 0; i < arr.length; i++) {
    58             for (int j = 0; j < arr[i].length; j++) {
    59                 System.out.print(arr[i][j]+"	");
    60             }
    61             System.out.println();
    62         }
    63     }
    64 
    65 
  • 相关阅读:
    单词接龙
    洛谷 P1015 回文数
    洛谷 P1012 拼数
    codevs 2780 ZZWYYQWZHZ
    专项练习之字符串
    模拟题1
    专项训练之线段树
    复习题之求后序遍历
    复习题之二叉树的遍历
    Hdu 3037 Saving Beans(Lucus定理+乘法逆元)
  • 原文地址:https://www.cnblogs.com/sun-/p/12681038.html
Copyright © 2011-2022 走看看