在行列都排好序的矩阵中找数

题目描述

给定一个有N×M的整型矩阵matrix和一个整数K,matrix每行每列都排好序了。
实现一个函数,判断K是否在matrix中。

分析

  1. 从右上角的数开始寻找
  2. 右上角比k小,说明k不可能在第一行了,看下面的行
  3. 右上角比k大,说明k不可能在最后一列,看左边的列

代码实现

public class FindNumInSortMatrix {
    public static int[] find(int[][] matrix, int num) {
        // 1-----------------------------------------------------
        int a = 0;// 行
        int b = matrix[0].length - 1;// 列
        while (a < matrix.length && b > -1) {
            if (matrix[a][b] == num) {
                return new int[] { a, b };
            } else if (matrix[a][b] < num) { // 2-------------------------
                a++;// 往下一行走
            } else { // 3-----------------------------------------------------
                b--;// 往该列左走
            }
        }
        return new int[] { -1, -1 };
    }

    public static void main(String[] args) {
        int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
        int num1 = 5;
        int arr1[] = find(matrix, num1);
        System.out.println(num1 + "在" + (arr1[0] + 1) +"行" + (arr1[1] + 1) + "列");
        int num2 = 7;
        int arr2[] = find(matrix, num2);
        System.out.println(num2 + "在" + (arr2[0] + 1) +"行" + (arr2[1] + 1) + "列");
    }
}
测试结果
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容