【Java】 剑指offer(3) 二维数组中的查找

2021-07-03 20:04

阅读:585

标签:array   break   比较   public   open   提交   als   二维数组   注意   

本文参考自《剑指offer》一书,代码采用Java语言。

题目

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

思路

  查找整数时,如果从左上角开始查找,情况较为复杂,可以转换思路,从右上角开始查找:左边数字比较小,右边数字比较大,容易进行判断。

测试用例

  1.要查找的数字在数组中

  2.要查找的数字不在数组中

  3.数组为空

  4.数组不满足大小规则

  5.数组每行长度不一致.

Java代码

(代码中包含测试代码)

/**
 * @Description 二维数组中的查找 
 *
 * @author yongh
 * @date 2018年7月16日 下午2:20:59
 */

// 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按
// 照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个
// 整数,判断数组中是否含有该整数。

public class FindInPartiallySortedMatrix {

	/*
	 * 判断二维数组matrix中是否含有整数a
	 * 返回值为a的下标,{-1,-1}代表不存在
	 */
	public int[] find(int[][] matrix, int a) {
		int[] index = { -1, -1 };

		// 判断数组是否正确
		if (matrix == null || matrix.length = 0) {
			if (a == matrix[row][column]) {
				index[0] = row;
				index[1] = column;
				System.out.println("数字" + a + "在二维数组中的下标为:" + index[0] + "," + index[1]); // 注意下标是从0开始的
				return index;
			} else if (a 

  

技术分享图片技术分享图片
test1:数字7在二维数组中的下标为:2,1
test2:数组中不含数字:5
test3:数组无效!
test4:数组中数字大小不符合要求!
test5:数组列数不一致!
FindInPartiallySortedMatrix

 

====================================================================

  上面代码考虑了数组数字大小不符合规则的情况,所以较为繁琐。

  在牛客网中提交的代码如下(不含测试代码):

public class Solution {
    public boolean Find(int target, int [][] array) {
        if(array==null||array.length=0){
            if(target==array[row][column]){
                return true;
            }else if(target

  

【Java】 剑指offer(3) 二维数组中的查找

标签:array   break   比较   public   open   提交   als   二维数组   注意   

原文地址:https://www.cnblogs.com/yongh/p/9619591.html


评论


亲,登录后才可以留言!