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

    题目描述:
    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
    题目来源
    http://ac.jobdu.com/problem.php?pid=1384
    题目分析:
    假设数组有m行、n列,待查找元素为t
    由于数组行、列均为递增排序,那么对于一个元素data[i][j]和待查找元素比较有三种情况
    (1)data[i][j] = t, 那么得到结果,返回
    (2)data[i][j] < t, 那么(i,j)左下方的元素都小于t,可以将这部分排除
    (3)data[i][j] > t, 那么(i,j)右上方的元素都大于t,可以将这部分排除
    考虑一个比较特殊的右上角位置(1,n),若data[1][n] = t, 那么得到结果,返回,若data[1][n] < t,那么可以排除第1行,若data[1][n] > t,那么可以排除第n列,问题变成在删除第1行或者第n列的子数组中查找t,将当前位置更新到现在数组的右上角,重复之前的操作,直到找到t或者整个数组被删除掉
    时间复杂度:O(m + n)
    示例代码:
    int data[m][n];
    
    bool run(int m, int n, int t) {
        int x = 0, y = n - 1;
    
        while(x < m && y >= 0) {
            if(data[x][y] == t) {
                return true;
            } else if(data[x][y] < t) {
                ++x;
            } else {
                --y;
            }
        }
    
        return false;
    }
  • 相关阅读:
    图片处理帮助类
    网站前端的优化
    状态码大全
    服务端性能监控工具Nmon使用方法
    jmeter测试报告解析
    jmeter聚合报告
    jmeter跨线程组调用参数
    jmeter生成测试报告
    Jmeter获取cookie
    monkey的使用方法和常见命令
  • 原文地址:https://www.cnblogs.com/daijinqiao/p/3328728.html
Copyright © 2011-2022 走看看