zoukankan      html  css  js  c++  java
  • 题目1:二维数组中的查找

    题目:一个二维数组中,每一行按照从左到右递增的顺序排列,每一列按照从上到下递增的顺序排列。

    要求:完成一个函数,输入这样的数组和一个整数,判断数组中是否含有该整数。存在,返回 true,不存在返回 false。

    题目链接

    思路

    一维递增数组中可以使用二分查找,每次都能将查找范围减小一半,题目中是二维数组,如果将每一行与每一列合并视为一个一维数组,则该数组为递增排列,使用二分查找,每次查找将范围减少一行或者一列,迭代之后,可以得到查找结果。

    以下图所示数组为例,查找22,需要经过四次查找,前两次分别将查找范围减少一行,第三次减少一列,第四次时,查找到22,结束。

    Java 实现

    public class Solution {
    	public boolean Find(int [][] array,int target) {
    		if (array == null || array.length == 0 || array[0].length == 0)
                return false;
            
            int rows = array.length;
            int cols = array[0].length;
            
            int i = 0, j = cols - 1;
            while (i <= rows - 1 && j >= 0) {
                int tmp = array[i][j];	// 从左下角开始查找
                if (target == tmp) {
                    return true;
                } else if (target > tmp) {
                    i++;	// 删除 tmp 所在列
                } else {
                    j--;	// 删除 tmp 所在行
                }
            }
            
            return false;
    	}
    }
  • 相关阅读:
    【Hello CC.NET】巧用模板简化配置
    【Hello CC.NET】自动化发布时 Web.config 文件维护
    Hello Jexus
    【Hello CC.NET】CC.NET 实现自动化集成
    SSE和WebSocket的用法和比较
    利用canvas实现鼠标跟随效果
    使用es6制作简单数独游戏
    ppt学习(3)
    ppt学习(2)
    ppt学习(1)
  • 原文地址:https://www.cnblogs.com/satansk/p/5552375.html
Copyright © 2011-2022 走看看