• [剑指Offer]5.二维数组中的查找


    题目

    在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序。请完毕一个函数,输入这种一个二维数组和一个整数。推断数组中是否含有该整数。

    思路

    [算法系列之三十三]杨氏矩阵

    代码

    /*---------------------------------------
    *   日期:2015-07-19
    *   作者:SJF0115
    *   题目: 5.二维数组中的查找
    *   网址:http://www.nowcoder.com/books/coding-interviews/abc3fe2ce8e146608e868a70efebf62e?rp=1
    *   结果:AC
    *   来源:剑指Offer
    *   博客:
    -----------------------------------------*/
    #include <iostream>
    #include <vector>
    using namespace std;
    
    class Solution {
    public:
        bool Find(vector<vector<int> > array,int target) {
            int row = array.size();
            if(row == 0){
                return false;
            }//if
            int col = array[0].size();
            if(col == 0){
                return false;
            }//if
            int i = 0,j = col - 1;
            while(i < row && j >= 0){
                // 大于目标 剔除这个数字所在的列
                if(array[i][j] > target){
                    --j;
                }//if
                // 小于目标 剔除这个数字所在的行
                else if(array[i][j] < target){
                    ++i;
                }//else
                else{
                    return true;
                }//else
            }//while
            return false;
        }
    };
    
    int main(){
        Solution s;
        vector<vector<int> > matrix = {
                {1,4,7,11,15},
                {2,5,8,12,19},
                {3,6,9,16,22},
                {10,13,14,17,24},
                {18,21,23,26,30}
            };
        int target = 30;
        cout<<s.Find(matrix,target)<<endl;
        return 0;
    }
    
  • 相关阅读:
    中海洋朗讯杯比赛总结[2014年12月]
    青理工ACM比赛总结和反思[2014年11月]
    程序员技术练级攻略
    一天能学会的计算机技术
    UVa 1597
    回滚机制
    超时和重试机制
    降级特技
    限流详解
    隔离术
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7400589.html
Copyright © 2020-2023  润新知