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

二维数组中的查找

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

时间复杂度O(m+n) 遍历每一行每一列的右上角元素直到找到元素
无额外空间
利用其有序递增的特点,进行一次循环排除一行或者一列,直到找到元素或者边界
有m行n列,最坏情况下共排除m+n次

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
      if (array.empty() || array[0].empty()) {
        return false;
      }
        
      // 求解行数 列数,以及一个指向右上角的坐标
      int rows = array.size(), columns = array[0].size();
      int row = 0, col = columns - 1;
      
      while (row < rows && col >= 0) {
        if (array[row][col] == target) {
          return true;
        } else if (array[row][col] < target) {
          row++;
        } else if (array[row][col] > target) {
          col--;
        }
      }
      
      return false;
    }
};
全部评论

相关推荐

前端劝退第一人:这边建议如果你数据库,计组,操作系统不是那么熟的话,还是删了吧,包拷打你的,主修课程这一部分其实没必要写
点赞 评论 收藏
分享
03-31 18:02
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务