zoukankan      html  css  js  c++  java
  • 剑指offer-2(二维数组中的查找)

    题目:

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

    思路:

    首先呢,我们拿二维数组最右上角的那个数与要查找的数进行比较,如果相等,直接返回;如果这个数比要查找的数大,行号不变,列号减一;如果这个数比要查找的数小,列号不变,行号加一。

    代码如下:

    public static boolean select(int[][] arr, int num) {
            if (arr == null || arr.length < 1 || arr[0].length < 1) {
                return false;
            }
            int rows = arr.length;// 数组的行数
            int cols = arr[0].length;// 数组的列数
            // 右上角数的行和列
            int row = 0;
            int col = cols - 1;
            while (row < rows && col >= 0) {
                if (arr[row][col] == num) {
                    return true;
                } else if (arr[row][col] > num) {
                    col--;
                } else {
                    row++;
                }
            }
            return false;
        }

    注意代码的健壮性,对空或数组长度的判断。

  • 相关阅读:
    centos7 yum错误相关
    centos7 jenkins
    vim 常用命令
    Effective STL(第7条)
    【hihoCoder】1049.后序遍历
    C++ 单元测试 Cpputest
    【hihoCoder】1041. 国庆出游
    LeetCode(43. Multiply Strings)
    【LeetCode】16. 4Sum
    【LeetCode】1. Two Sum
  • 原文地址:https://www.cnblogs.com/javatalk/p/10100025.html
Copyright © 2011-2022 走看看