力扣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;
    }
}

要点解析:

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

相关推荐
AI_Ming1 分钟前
Seq2Seq-大模型知识点(程序员转行AI大模型学习)
算法·ai编程
若水不如远方8 分钟前
分布式一致性(六):拥抱可用性 —— 最终一致性与 Gossip 协议
分布式·后端·算法
计算机安禾11 分钟前
【C语言程序设计】第35篇:文件的打开、关闭与读写操作
c语言·开发语言·c++·vscode·算法·visual studio code·visual studio
Wect20 分钟前
React Hooks 核心原理
前端·算法·typescript
美式请加冰27 分钟前
字符串的介绍和使用
算法
m0_7336122133 分钟前
C++20概念(Concepts)入门指南
开发语言·c++·算法
仰泳的熊猫35 分钟前
题目2571:蓝桥杯2020年第十一届省赛真题-回文日期
数据结构·c++·算法·蓝桥杯
我喜欢就喜欢39 分钟前
基于离散余弦变换的感知哈希算法:原理、实现与工程实践
算法·哈希算法
2301_807367191 小时前
C++中的模板方法模式
开发语言·c++·算法
PhotonixBay1 小时前
共聚焦显微镜的结构组成与应用
人工智能·算法·机器学习