二维数组中的查找

  1. 题目描述
    1. 书上思路:返回缩小的方法每次一行或者一列

题目描述

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

书上思路:返回缩小的方法每次一行或者一列

  • 从右上方,当前值大于目标值,缩短一列,否则缩短一行
  • 从左下方,当前值大于目标值,缩短一行,否则缩短一列
class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        bool flag = false;
        int r = array.size();// 获取行数
        int c = array[0].size();// 获取行的元素个数
        // 横纵查找,
        // i 为纵向,负责从小到大遍历
        // j 为横向,负责从大到小遍历
        for (int i = 0,j = c - 1;i < r && j >= 0;){
            if (array[i][j] == target){
                flag = true;
                break;
            }
            if (array[i][j] > target){ // 当前值大了
                j--; // 行缩
            }else { // 当前值小了
                i++; // 列缩 
            }
        }
        return flag;
    }
};

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com

💰

Title:二维数组中的查找

Count:282

Author:攀登

Created At:2019-12-26, 23:12:31

Updated At:2024-06-15, 15:53:35

Url:http://jiafeimao-gjf.github.io/2019/12/26/sword-%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9F%A5%E6%89%BE/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

×

Help us with donation