leetcode 240. 搜索二维矩阵 II

2023.11.22

本题最先想到的是暴力法和二分法,暴力法就不写了,写一下二分法的解法,java代码如下:

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

翻看了下评论区,有个Z字型解法,是从右上角开始遍历,我则从左下角开始遍历,然后当前元素大于target值就往上走,小于target值就往右走,直到走到边界也没找到就返回false,java代码如下:

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int row = matrix.length-1;
        int col = 0;
        //从左下角开始搜索
        while(row>=0 && col<matrix[0].length){
            if(matrix[row][col] == target) return true;
            else if(matrix[row][col] > target) row--;
            else col++;
        }
        return false;
    }
}
相关推荐
Tisfy3 分钟前
LeetCode 3713.最长的平衡子串 I:计数(模拟)
算法·leetcode·题解·模拟
月疯3 分钟前
陀螺仪和加速度计(模拟状态,计算运动状态)
算法
鹅是开哥3 分钟前
Spring AI Alibaba + DashScope 调用超时彻底解决(SocketTimeoutException / read timeout)
java·人工智能·spring
Σίσυφος19008 分钟前
双目立体视觉 数学推导(从 F → E → R,T)
算法
毕设源码-钟学长11 分钟前
【开题答辩全过程】以 基于springboot网络游戏账号租赁以及出售系统为例,包含答辩的问题和答案
java·spring boot·后端
Hcoco_me17 分钟前
目标追踪概述、分类
人工智能·深度学习·算法·机器学习·分类·数据挖掘·自动驾驶
vx+_bysj686919 分钟前
【免费领源码】基于Springboot白隼校园音乐点歌系统 计算机毕业设计项目推荐上万套实战教程JAVA,node.js,C++、python、大屏数据可视化
java·spring boot·mysql·课程设计
C雨后彩虹21 分钟前
跨线程数据传递InheritableThreadLocal的原理
java·多线程·同步·异步·threadlocal
熬了夜的程序员22 分钟前
【LeetCode】117. 填充每个节点的下一个右侧节点指针 II
java·算法·leetcode
yujunl28 分钟前
排除一个版本原因导致Mybatis Plus不能分页的问题
java