zoukankan      html  css  js  c++  java
  • 【面试题3】二维数组中的查找

    【题目描述】

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

    【解决方案】

    每次根据右上角的一个数arr[i][j]和所求整数num的比较结果,来排除一行(或一列)的整数。

    arr[i][j] == num,数组中数组中存在该整数;

    arr[i][j] > num,arr[i][j]所在列都比num大,排除arr[i][j]所在列;

    arr[i][j] < num,arr[i][j]所在行都比num小,排除arr[i][j]所在行; 

    我的代码实现,仅供参考:

     1         public bool IsExists(int[][] arr, int num)
     2         {
     3             if (arr == null || arr[0] == null)
     4                 return false;
     5 
     6             int row = 0;
     7             int rows = arr[0].Length;
     8             int col = arr.GetLength(0) - 1;
     9 
    10             while (row < rows && col >= 0)
    11             {
    12                 if (arr[row][col] > num)
    13                 {
    14                     col--;
    15                 }
    16                 else if (arr[row][col] < num)
    17                 {
    18                     row++;
    19                 }
    20                 else if (arr[row][col] == num)
    21                 {
    22                     return true;
    23                 }
    24             }
    25 
    26             return false;
    27         }
  • 相关阅读:
    利用三层交换机实现VLAN间路由
    利用单臂路由实现VLAN间路由
    理解Hybrid接口的应用
    配置NAT
    OSPF 与ACL综合实验
    OSPF单区域配置
    RSTP基础配置
    配置基于全局地址池的DHCP
    静态路由及默认路由配置
    利用三层交换机实现VLAN间路由
  • 原文地址:https://www.cnblogs.com/HuoAA/p/4796850.html
Copyright © 2011-2022 走看看