zoukankan      html  css  js  c++  java
  • Search a 2D Matrix II

    问题描述

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

    • Integers in each row are sorted in ascending from left to right.
    • Integers in each column are sorted in ascending from top to bottom.

    For example,

    Consider the following matrix:

    [
      [1,   4,  7, 11, 15],
      [2,   5,  8, 12, 19],
      [3,   6,  9, 16, 22],
      [10, 13, 14, 17, 24],
      [18, 21, 23, 26, 30]
    ]
    

    Given target = 5, return true.

    Given target = 20, return false.

    解决思路

    从最左下角的元素开始判断,最坏情况为遍历完矩阵的对角线上的元素,时间复杂度为O(n).

    程序

    public class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
                return false;
            }
            
            int rows = matrix.length, cols = matrix[0].length;
            // left bottom number
            int i = rows - 1, j = 0;
            
            while (i >= 0 && j <= cols - 1) {
                int num = matrix[i][j];
                if (num == target) {
                    return true;
                }
                if (num > target) {
                    --i;
                    continue;
                }
                if (num < target) {
                    ++j;
                }
            }
            
            return false;
        }
    }
    

      

  • 相关阅读:
    Git之不明觉厉11-利其器source tree
    GUI for git|SourceTree|入门基础
    UIButton
    NSDictionary
    注释方法、代码块加快捷键注释
    UIActionSheet
    UIActivityIndicatorView
    UIPickerView
    UIImageView
    UIAlertView
  • 原文地址:https://www.cnblogs.com/harrygogo/p/4670498.html
Copyright © 2011-2022 走看看