74. Search a 2D Matrix

    xiaoxiao2021-03-25  139

    提交了两次AC,第一次错误出在了

    if(matrix.size()==0||matrix[0].size()==0) return false;

    这两种情况是不一样的: matrix.size()==0对应于[]。 matrix[0].size()==0对应于[[]],这种情况下matrix.size()是1,但是matrix[0].size()为0。

    最终AC代码。

    class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if(matrix.size()==0||matrix[0].size()==0) return false; int m=matrix.size(); int n=matrix[0].size(); if(target<matrix[0][0]||target>matrix[m-1][n-1]) return false; int topRow=0; int buttonRow=m-1; while(topRow<buttonRow) { int mid=topRow+(buttonRow-topRow)/2; if(matrix[mid][n-1]<target) topRow=mid+1; else if(matrix[mid][n-1]>target) buttonRow=mid; else return true; } if(topRow>buttonRow) return false; //topRow==buttonRow int left=0; int right=n-1; while(left<right) { int mid=left+(right-left)/2; if(matrix[topRow][mid]<target) left=mid+1; else if(matrix[topRow][mid]>target) right=mid-1; else return true; } if((left>right)||(matrix[topRow][left]!=target)) return false; else return true; } };
    转载请注明原文地址: https://ju.6miu.com/read-8590.html

    最新回复(0)