zoukankan      html  css  js  c++  java
  • 剑指offer 面试题4:二维数组中的查找

    题目描述

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

    编程思想

    首先选取数组中右上角(或者左下角)的数字,如果该数字等于要查找的数字则返回true,如果该数字大于要查找的数字则提出该数字所在列,如果该数字小于要查找的数字则提出该数字所在行。以此类推,可以缩小查找范围,直到查找成功或者查找范围为空。

    编程实现

    class Solution {
    public:
        bool Find(int target, vector<vector<int> > array) {
            int rowCnt = array.size();    //矩阵的行数
            int colCnt = array[0].size();    //矩阵的列数
            bool found = false;
            if(rowCnt > 0 && colCnt > 0)
            {
                int row = 0;
                int col = colCnt - 1;
                while(row <= rowCnt-1 && col >= 0)    //注意这里的临界条件
                {
                    if(array[row][col] == target)
                    {
                        //如果给的指向二位数组的指针的话
                        //array[row * colCnt + col]
                        found = true;
                        break;
                    }
                    else if(array[row][col] > target)
                    {
                        --col;
                    }
                    else
                    {
                        ++row;
                    }
                }
            }
            return found;
        }
    };
     

    题目总结

    不能选择左上角的数字或者右下角的数字。

  • 相关阅读:
    redis排序【转载】
    程序员必读的30本书(转)
    Linux进程调度程序的具体细节(转)
    汉字转换拼音(网上找的js库)
    虚拟机配置host访问主机web
    301重定向的实现方法(转)
    浏览器关闭后,能继续执行的函数
    awk文本处理总结(转)
    DTD
    DOM编程艺术 4
  • 原文地址:https://www.cnblogs.com/parzulpan/p/11256202.html
Copyright © 2011-2022 走看看