首页 > 试题广场 >

二维数组寻值

[编程题]二维数组寻值
  • 热度指数:51 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个程序,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数(注意:请实现一个时间复杂度最低的算法)

示例1

输入

[[1,2,3],[7,8,9],[10,11,12]],8

输出

true
左神《程序员代码面试指南》第一题,先从右上角开始找,如果比目标小,则本行无需查找,向下移动一行;如果比目标大,则在本行查找,向左移动一列;如果相等直接返回true。
import java.util.*;


public class Solution {
    /**
     * 寻找目标是否在二维数组内
     * @param array int整型二维数组 二维数组
     * @param target int整型 目标值
     * @return bool布尔型
     */
    public boolean Find (int[][] array, int target) {
        // write code here
        int m = array.length, n = array[0].length;
        int i = 0, j = n - 1;
        while(i < m && j >= 0){
            if(array[i][j] < target)
                i++;
            else if(array[i][j] > target)
                j --;
            else
                return true;
        }
        return false;
    }
}


发表于 2021-02-07 16:41:32 回复(0)