题解 | #二维数组中的查找#

二维数组中的查找

http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

这个题的重点是把握一个单调的规律。
左下角刚好满足这样的条件,如果目标比它大肯定在它右边,比它小肯定在它上边。
这个性质是解这个题的关键。找到这个性质,这个题就非常简单了。

bool Find(int target, vector<vector<int> > array) {
        int m = array.size();
        int n = array[0].size();
        if(n == 0){
            return false;
        }
        
        for(int i=0;i< m;i++){
            if(target > array[i][n-1]){
              continue;
            }
            
            for(int j=n-1;j>=0;j--){
                if(target == array[i][j]){
                    return true;
                }
            }
        }
//         int r = 0, c = n-1; // 右上角元素
//         while (r<m && c>=0) {
//              if (target == array[r][c]) {
//                  return true;
//              }
//              else if (target > array[r][c]) {
//                  ++r;
//              }
//              else {
//                  --c;
//              }
//          }
        
        return false;
    }


全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务