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

    剑指offer--二维数组中查找

    题目描述

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,

    每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一

    个整数,判断数组中是否含有该整数。

    public class Solution {
        public boolean Find(int target, int [][] array) {
        }
    }
    

    解题思路

    ({1,3,5,12,14},

    {2,4,7,13,16},

    {3,6,9,15,19},

    {6,8,10,19,21})

    因为数组每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

    所以可以把右上角的数看作其所在行和所在列组成的递增数组的中位数({1,3,5,12,14(右上角的数),16,19,21},

    然后把当目标值与右上角的    值进行比较,若目标值大于右上角的数,那么就把行值增加 (i++;相当于查询递增数组的右边的值。); 若目标值小于右上角的数就减小列值(length--;相当于索引中位数的左值);如果相等在返回true,否则返回false;

    解题代码

    public static boolean Find(int target, int [][] array) {
        int length = array[0].length - 1;//记录数组的列值
        int i=0;//记录数组的行数
        while(length >= 0 && (i < array.length)){
            if (array[i][length] == target)
                return true;
            else if (array[i][length] > target) length--;
            else if(array[i][length] < target) i++;
        }
        return false;
    }
    
  • 相关阅读:
    ARCDesktop 学习笔记(一) 添加地图图层
    ARCGIS 开发常用技巧参考
    关于引用动软代码 找不到dll命名空间问题
    银行转账手续费
    Silverlight 笔记
    地图API
    (转)使用ImageBrush替换PictureMarkerSymbol以加强graphic显示性能
    WPF 网摘
    ArcCatalog添加GISserverIP问题
    ARCGIS 10 中文版 3D Analyst Tools等未授权问题
  • 原文地址:https://www.cnblogs.com/wf614/p/12259706.html
Copyright © 2011-2022 走看看