• 剑指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 }

     

  • 相关阅读:
    vue点击实现箭头的向上与向下
    ES6中箭头函数加不加大括号的区别
    angular图片的两种表达方式
    通过添加类名实现样式的变化
    angular中路由跳转并传值四种方式
    Sublime Text 3 设置文件详解(settings文件)
    Second:eclipse配置Tomcat
    First:安装配置JDK and 部署Tomcat
    本地环境代码一码云一服务器代码部署
    2.sublime设置本地远程代码同步
  • 原文地址:https://www.cnblogs.com/noaman/p/5338553.html
Copyright © 2020-2023  润新知