力扣hot100:搜索二维矩阵

题目描述:

题目分析:

本题的本质是一个查找算法,为了提高性能可以使用二分查找,这个二维矩阵可以看出许多个数组,只需要对每个数组都进行一次二分查找就可以实现查找整个二维矩阵。(二分查找的解析可以看之前https://mp.csdn.net/mp_blog/creation/editor/155892434

代码如下:

java 复制代码
class Solution {
    private int erfen(int[] nums,int target){
        int right=nums.length-1;
        int left=0;
        while(left<=right){
            int mid=(right-left)/2+left;
            if(target>nums[mid]){
                left=mid+1;
            }else{
                right=mid-1;
            }
        }
        return left;
    }
    public boolean searchMatrix(int[][] matrix, int target) {
        int n=matrix.length;
        for(int i=0;i<n;i++){
            int weizi=erfen(matrix[i],target);
            if(weizi<matrix[i].length&&matrix[i][weizi]==target){
                return true;
            }
        }
        return false;
    }
}

要点解析:

二分查找返回的是目标值最先出现的位置或者是在有序数组中的插入位置,如果是在有序数组中的插入位置则可能为在数组最后一个位置加一个数,这是如果进行matrixiweizi==target的判断的话会导致数组越界,必须先处理越界问题,最终判断条件应为weizi<matrixi.length&&matrixiweizi==target。

相关推荐
怕浪猫2 分钟前
从 Windows 换到 Mac 三个月,我真香了
算法·面试·架构
aichitang202434 分钟前
前端小skill
前端·人工智能·算法·ai·前端框架
All for pursuit.2 小时前
【链表-9】146.LRU缓存
数据结构·c++·算法·leetcode
木子算法2 小时前
测出来的值会抖:约束和目标带噪声时,「可行」和「更好」该怎么判
人工智能·算法·目标跟踪
圣保罗的大教堂2 小时前
leetcode 1477. 找两个和为目标值且不重叠的子数组 中等
leetcode
hanlin033 小时前
刷题笔记:力扣第144题-二叉树的前序遍历
笔记·算法·leetcode
金士曼3 小时前
从规则到涌现:算法认知的三个层次
算法
微三云 - 廖会灵 (私域系统开发)4 小时前
私域电商多端商城系统架构实践:小程序 / APP / H5 一套后端如何落地
矩阵·重构·零售
AgentMaster4 小时前
数据资产化落地难题:5款数据中台系统架构对比与实施记录
大数据·人工智能·算法
鹿角片ljp4 小时前
从 Kimi Cyber Reasoning 学习网络安全推理数据集:从 Reasoning SFT 到安全 Agent 数据设计
数据结构·算法