zoukankan      html  css  js  c++  java
  • 剑指offer系列3---二维数组查找

    【题目】在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

        请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    【思路】从给定的二维数组的右上角的数开始与指定的数进行比较。大了说明选取的数所在的列均大,去除该列(列-1);小了说明选取的数所在的行均小,在下一行进行查询(行+1),相等即为刚好查找的数。

     1 package com.exe1.offer;
     2 
     3 /**
     4  * 【题目】在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
     5  *         请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     6  * 【思路】取二维数组的最右上角的数,与指定数字比较。
     7  *           相等即返回true;
     8  *       大即去掉所在列;
     9  *       小即去掉所在行。
    10  * @author WGS
    11  *
    12  */
    13 public class ArraysSearchElement {
    14     public boolean getElementFromMatrix(int[][] arr,int num){
    15         int rows=arr.length;
    16         int columns=arr[0].length;
    17         int i=0,j=columns-1;
    18         boolean flag=false;
    19         while(i<rows&& j>=0){
    20             if(arr[i][j]>num){
    21                 --j;
    22             }else if(arr[i][j]<num){
    23                 ++i;
    24             }else{
    25                 flag= true;
    26                 break;
    27             }
    28         }
    29         return flag;
    30          
    31     }
    32     public static void main(String[]  args){
    33         int[][] arrays=new int[4][4];
    34         arrays[0]=new int[]{1,2,8,9};
    35         arrays[1]=new int[]{2,4,9,12};
    36         arrays[2]=new int[]{4,7,10,13};
    37         arrays[3]=new int[]{6,8,11,15};
    38         boolean b=new ArraysSearchElement().getElementFromMatrix(arrays,8);
    39         System.out.println("是否找到对应的数字"+b);
    40         
    41         
    42     }
    43 }

     

  • 相关阅读:
    pat甲级 1155 Heap Paths (30 分)
    pat甲级 1152 Google Recruitment (20 分)
    蓝桥杯 基础练习 特殊回文数
    蓝桥杯 基础练习 十进制转十六进制
    蓝桥杯 基础练习 十六进制转十进制
    蓝桥杯 基础练习 十六进制转八进制
    51nod 1347 旋转字符串
    蓝桥杯 入门训练 圆的面积
    蓝桥杯 入门训练 Fibonacci数列
    链表相关
  • 原文地址:https://www.cnblogs.com/noaman/p/5338553.html
Copyright © 2011-2022 走看看