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

    题目描述

      在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     
      时间限制:1秒,空间限制:32768K
     

    思路

      在二维数组中,是有序的,从左下角开始查找,往上是递减,往右是递增,如下面的二维数组

           1   2  3  4  5

           2  3  4  5  6

       3  4  5  6  7

       4  5  6  7  8

       5  6  7  8  9

          代码如下

    package com.algorithm;
    
    import java.util.Scanner;
    
    /**
     * 在二维数组中的查找
     * 在一个二维数组中,每一行都按照从左到右递增
     * 的顺序排序,每一列都按照从上到下递增的顺序排序
     * @日期: 2018年6月7日 下午9:46:34
     * @作者: Chendb
     */
    public class TwoArray {
        
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            // 矩阵大小
            int number = scanner.nextInt();
            
            //定义矩阵
            int[][] matrix = new int[number][number];
            for (int i = 0 ; i < number ; i++){
                for (int j = 0 ; j < number ; j++) {
                    matrix[i][j] = scanner.nextInt();
                }
            }
            
            //需要查找的数字
            int target = scanner.nextInt();
            
            //输出矩阵
            for (int i = 0 ; i < number ; i++){
                for (int j = 0 ; j < number ; j++) {
                    System.out.print(matrix[i][j] + "	");
                }
                System.out.println("");
            }
            
            //是否存在
            boolean isExist = find(target,matrix);
            System.out.println("是否存在:" + (isExist ? "是" : "否"));
        }
    
        public static boolean find(int target, int [][] array) {
            
            //判断二维数组是否为空
            if (array == null || array.length == 0 || (array.length == 1 && array[0].length == 0)) {
                return false;
            }
            
            //行数
            int rows = array.length;
            //列数
            int cols = array.length;
            
            int i = rows - 1;
            int j = 0;
            
            // 在矩阵中,从左下角开始查找,往上递减,往右递增
            while (i >= 0 && j < cols){
                
                if (target == array[i][j]) { // 如果相等,则返回true
                    return true;
                }else if (target < array[i][j]) { // 如果小于,则往上找
                    i--;
                }else { // 如果大于,则往右找
                    j++;
                }
            }
            
            return false;
        }
        
    }
    View Code
  • 相关阅读:
    sqlplus中设定行大小、页大小、字符列格式、数字列格式、清屏
    位图索引
    B树索引
    Oracle列自增实现(3)-DEFAULT Values Using Sequences
    Oracle列自增实现(2)-Identity Columns in Oracle Database 12c Release 1 (12.1)
    oracle列自增实现(1)-Sequence+Trigger实现Oracle列自增
    ORA-01502: 索引或这类索引的分区处于不可用状态
    Oracle中的rowid
    Multitenant Architecture---PDB与CDB
    ODI Studio拓扑结构的创建与配置(Oracle)
  • 原文地址:https://www.cnblogs.com/cdblogs/p/9153148.html
Copyright © 2011-2022 走看看