力扣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。

相关推荐
Sam092740 分钟前
【AI 算法精讲 16】BPE 分词:从字节对到子词
人工智能·python·算法·ai
LJHclasstore_luo43 分钟前
【题解】WebGoC 102683.大雨过后
算法·goc编程
MrZhao4001 小时前
Agent 如何持续工作:任务持久化、后台执行与定时唤醒
算法
用户701720739001 小时前
密码学之分组密码
算法
MrZhao4001 小时前
Agent 长上下文处理机制:Context Compact 与 Memory 的协同
算法
h_a_o777oah1 小时前
【动态规划】区间 DP :三层循环逻辑与模板实现细节(洛谷 P1880)
c++·算法·动态规划·acm·区间dp·化环为链·石子合并
从此以后自律1 小时前
迪杰斯特拉
算法
QiLinkOS1 小时前
第三视觉理解徐玉生与他的商业活动(32)
大数据·c++·人工智能·算法·开源协议
KaMeidebaby1 小时前
卡梅德生物技术快报|实操手册:CXCL4 蛋白原核表达全套工艺,两步层析去除蛋白多聚体附完整电泳数据
人工智能·算法·机器学习·架构·spark