• 剑指Offer01之二维数组中查找目标数


    剑指Offer之二维数组中查找目标数

    题目描述

    ​ 在一个二维数组中(每个一维数组的长度相等),每一行都是从左到右递增的顺序排序,每一列都是从上到下递增的顺序排序,输入这样一个二维数组和一个整数,判断该整数是否在二维数组中。

    解题思路及代码

    // 暴力查找法,通过遍历整个二维数组进行判断
        public static boolean violence(int[][] arr,int target) {
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[0].length; j++){
                    if (arr[i][j] == target)
                        return true;
                }
            }
            return false;
        }
    
        /**
         *   tips: 二维数组其实就是元素类型为数组的一维数组。 ex:  {{1,2,3},{2,3,4},{3,4,5}}
         *  可理解为: 1,2,3
         *            2,3,4
         *            3,4,5
         *  此时我们可以将target 和每一行的最后一个元素作比较,有三种情况发生
         *  1. 相等   则直接返回true 即二维数组中存在该元素
         *  2. 最后一个元素 > target   则target不可能存在当前行中,直接跳转到下一行
         *  3. 最后一个元素 < target   则每个一维数组的最后一行都不用比较了
         *
         */
        public static boolean find(int[][] array,int target) {
            int maxX = array.length;
            int maxY = array[0].length;
            int x = 0;
            int y = maxY - 1;
            while (x < maxX && y >= 0) {
                if (array[x][y] == target)
                    return true;
                if (array[x][y] > target)
                    y--;
                else
                    x++;
            }
            return false;
        }
    
  • 相关阅读:
    Xamarin 技术全解析
    Winform文件下载之WinINet
    MFC中动态添加控件----寻找多年的秘籍,吐血推荐
    CWnd与HWND的区别与转换
    WinExec, ShellExecute,CreateProcess 区别
    第一个OpenGL程序
    C++ GDI图形设备接口
    oracle直接读写ms sqlserver数据库(一)如何下载oracle database gateway for sqlserver
    Android签名详解
    7款精美HTML5应用
  • 原文地址:https://www.cnblogs.com/ring2/p/12570756.html
Copyright © 2020-2023  润新知