zoukankan      html  css  js  c++  java
  • 剑指offer(1)之二维数组中的查找

    题目:

    在一个 n * m 的二维数组(每个一维数组的长度相同)中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     
    方法一:暴力法:
        思路:用两个for循环遍历整个二维数组,一一比对,找到该整数返回true,没有找到返回false
        代码如下
            
     1 public class Solution {
     2     public boolean Find(int target, int [][] array) {
     3         for(int i=0;i<array.length;i++)
     4         {
     5             for(int j=0;j<array[i].length;j++)
     6             {
     7                 if(array[i][j]==target)
     8                 {
     9                     return true;
    10                 }
    11             }
    12         }
    13         return false;
    14     }
    15 }
     
    方法二:左下查找法:
        思路:题目关键语句,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。那么这么一个二维数组的举例
    [
      [1,   4,  7, 11, 15],
      [2,   5,  8, 12, 19],
      [3,   6,  9, 16, 22],
      [10, 13, 14, 17, 24],
      [18, 21, 23, 26, 30]
    ]
    [
      [1]
    ]

        那么在二维数组左下角的元素,例如18,为该列最大的元素,该行最小的元素,我们每次确定m为这个数,

        每次和target进行比较

          每当target>m,说明target在m的右边,所以将m的值向右移

          每当target<m,说明target在m的上边,所以将m的值向上移

          每当target=m,说明target已经找到

        代码如下

            

    
    
    1. class Solution {
    2.     public boolean findNumberIn2DArray(int[][] array, int target) {
    3.      //进行数组长度的检查
    4.      int rows=array.length;
    5.         if(rows==0)
    6.             return false;
    7.         int cols=array[0].length;
    8.         if(cols==0)
    9.         {
    10.             return false;
    11.         }
    12.         int row=rows-1;
    13.         int col=0;
    14.     //开始查找该整数
    15.         while(row>=0 && col<cols)
    16.         {
    17.             if(target > array[row][col])
    18.             {
    19.                 col++;
    20.             }
    21.             else if(target < array[row][col])
    22.             {
    23.                 row--;
    24.             }
    25.             else
    26.             {
    27.                 return true;
    28.             }            
    29.         }
    30.         return false;
    31.     }
    32. }
     
     
  • 相关阅读:
    bootstrap经典总结
    C#操作CAD-读取和修改数据
    C#操作CAD-调用winform
    C#操作CAD-初始化、引用dll
    oracle查询时间
    ArcGIS API for JavaScript开发环境搭建及第一个实例demo
    mysql命令大全
    第一次配置mysql5.6
    ExcelHelper
    excel常用函数
  • 原文地址:https://www.cnblogs.com/quxiangjia/p/12507691.html
Copyright © 2011-2022 走看看