LeetCode(剑指 Offer)- 04. 二维数组中的查找

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 04. 二维数组中的查找相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:

解题思路

相关企业

  • 字节跳动
  • 微软(Microsoft)
  • 谷歌(Google)
  • 苹果(Apple)
  • 亚马逊(Amazon)
  • 甲骨文(Oracle)
  • 腾讯(Tencent)
  • Facebook
  • 恒生电子股份有限公司

AC 代码

  • Java
// 解决方案(1)
class Solution 
    public boolean findNumberIn2DArray(int[][] matrix, int target) 
        int i = matrix.length - 1, j = 0;
        while(i >= 0 && j < matrix[0].length)
        
            if(matrix[i][j] > target) i--;
            else if(matrix[i][j] < target) j++;
            else return true;
        
        return false;
    


// 解决方案(2)
class Solution 
    public boolean findNumberIn2DArray(int[][] matrix, int target) 
        int rowLen = matrix.length;
        if (rowLen == 0 || matrix[0].length == 0) 
            return false;
        
        
        // 每 row 判断是否可能执行, 如果可以进行二分查找
        for (int i = 0; i < matrix.length; i++) 
            if (target < matrix[i][0] || target > matrix[i][matrix[i].length - 1]) 
                continue;
            
            int idx = find(matrix[i], target);
            if (matrix[i][idx] == target) 
                return true;
            
        
        return false;
    

    private int find(int[] arr, int target) 
        int l = 0, r = arr.length - 1;
        while (l <= r) 
            int mid = (l + r) / 2;
            if (arr[mid] == target) 
                return mid;
             else if (arr[mid] < target) 
                l = mid + 1;
             else 
                r = mid - 1;
            
        
        return l - 1;
    
  • C++
class Solution 
public:
    bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) 
        int i = matrix.size() - 1, j = 0;
        while(i >= 0 && j < matrix[0].size())
        
            if(matrix[i][j] > target) i--;
            else if(matrix[i][j] < target) j++;
            else return true;
        
        return false;
    
;

以上是关于LeetCode(剑指 Offer)- 04. 二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)

剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)

剑指Offer 04. 二维数组中的查找

剑指Offer 04. 二维数组中的查找

⭐算法入门⭐《队列 - 单调队列》中等04 —— LeetCode 剑指 Offer 59 - II. 队列的最大值

leetcode-剑指 Offer 55 - II平衡二叉树