剑指 1.二维数组中的查找

题目链接

题目

在这里插入图片描述

思路

暴力求解不说
题目说每行每列都是递增的,
先用左下角的数和target比较

  • 大于target的话,那么当前这一行这个数后面的数全部都大于target,所以直接去看上一行(row--)
  • 小于target的话,就比较当前行这个数后面的数(col++)
    也可以从右上角开始比较

代码

class Solution {
    
    
public:
    bool Find(int target, vector<vector<int> > array) {
    
    
        int n = array.size(); //行数
        int m = array[0].size(); //列数
        int row = n - 1, col = 0;
        while (row >= 0 && col < m) {
    
    
            if (array[row][col] == target) return true;
            else if (array[row][col] > target) {
    
    
                row--;
            } else {
    
    
                col++;
            }
        }
        return false;
    }
};

让我想到了杨辉矩阵,也是行列递增,找第K大的数,那道题是二维矩阵中用二分
看这篇

猜你喜欢

转载自blog.csdn.net/weixin_44119881/article/details/112172803
今日推荐