LeetCode#74 Search a 2D Matrix(week4)

本文讨论LeetCode周赛#74的问题,即在一个升序排列的二维矩阵中查找目标值是否存在。文章提供了问题解析和简洁的代码实现,通过比较每行首尾元素来快速定位目标值。
摘要由CSDN通过智能技术生成

week4(problem1)

题目

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.
For example,

Consider the following matrix:

[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target = 3, return true.

原题网址:https://leetcode.com/problems/search-a-2d-matrix/description/

解析

该题目较为简单,给出一个vector存放的二维数组,给定一个数,查找该数是否在该二维数组中。
注意到题目给出的数组的每行的数都是已经从小到大排列的了,因此可以检查每行的第一个数和最后一个数,与目标数比较大小,确定目标数有无可能在该行中,如果无可能则直接跳过该行的检索。

代码

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        for (int i = 0; i < matrix.size(); i++) {
            /*记录该行元素个数*/
            int s = matrix[i].size();
            /*数组有可能为空*/
            if (!matrix[i].empty()) {
                if (matrix[i][0] <= target && target <= matrix[i][s - 1]) {
                    for (int j = 0; j < s; j++) {
                        if (target == matrix[i][j]) {
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值