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

    题目来自剑指offer,如下图所示。

    下图是解法。

     1 package com.jeaven;
     2 import java.util.Scanner;
     3 
     4 /*在二维数组中查找数字*/
     5 public class Problem4 {
     6     public static void main(String[] args) {
     7         int num = 0; //待查找的数字
     8         int row = 0;  //数组行数
     9         int col = 0;   //数组列数
    10         Scanner reader = new Scanner(System.in);
    11         System.out.println("请输入数组的行数:");
    12         if(reader.hasNextInt()) {
    13             row = reader.nextInt();
    14         }
    15         System.out.println("请输入数组的列数:");
    16         if(reader.hasNextInt()) {
    17             col = reader.nextInt();
    18         }
    19         int[][] arr = new int[row][col]; //初始化数组
    20         for(int i = 0; i < row; i++) {
    21 
    22             System.out.println("请输入第 " + (i+1) + " 行的数");
    23             for(int j = 0; j < col; j++) {
    24                 if(reader.hasNextInt()) {
    25                     arr[i][j] = reader.nextInt();
    26                 }
    27             }
    28         }
    29         System.out.println("请输入需要查找的数字: ");
    30         if(reader.hasNextInt()) {  //输入一个等待查找的数字
    31             num = reader.nextInt();
    32         }
    33         new Problem4_Solution1().solve(arr, num);
    34     }
    35 }
    36 
    37 
    38 /*解法:从数组的左下角或者右上角开始查找,下面从左下角开始查找
    39 *依次缩小搜索范围,小于当前的数则减少下面一行,大于则减少左边一列
    40 *注意:如果数组中有重复数字,那从左下角开始查找,只能查找距离左下角元素最近的那个数字。
    41 */
    42 class Problem4_Solution1 {
    43     public boolean solve(int[][] arr, int num) {
    44         int row = arr.length; //获得二维数组的行数
    45         int col = arr[0].length; //获得二维数组的列数
    46         int find_row = row - 1;
    47         int find_col = 0;
    48         while((find_row >= 0) && (find_col <= col-1)) {
    49             if(arr[find_row][find_col] == num) {
    50                 System.out.println("find it successfully...");
    51                 System.out.println("查找数字是数组的第 " + (find_row+1) + " 行,第 "+ (find_col+1) +" 列");
    52                 return true;
    53             } else if(arr[find_row][find_col] > num){
    54                 find_row -= 1;
    55             } else {
    56                 find_col += 1;
    57             }
    58         }
    59 
    60         return false;
    61     }
    62 }

    下面这个是结果图。从问题图中那个4x4的二维矩阵中查找出数字7。

  • 相关阅读:
    Hibernate执行访问步骤及增删改查
    Tuscany SCA 发布Web Service
    AJAX概述
    WSDL概述与结构
    Android常用的简单代码
    volatile/synchronized
    SOAP概述和结构
    [原]spring学习笔记6.补遗2
    [原]spring学习笔记9.1Spring对Aop的支持AOP基础篇
    [转]转个经典的帖子:说故事学设计模式之Java静态代理模式
  • 原文地址:https://www.cnblogs.com/jeavenwong/p/11119534.html
Copyright © 2011-2022 走看看