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

    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 from left to right.
    • The first integer of each row is greater than the last integer of the previous row.

    For example,

    Consider the following matrix:

    [
      [1,   3,  5,  7],
      [10, 11, 16, 20],
      [23, 30, 34, 50]
    ]
    

    Given target = 3, return true.

    思路:先利用每一行的最后一个数与target判断,确定target可能在的行数;再在确定的那一行进行折半查找。

    public class S074 {
        public boolean searchMatrix(int[][] matrix, int target) {
            int i  = 0;
            for (;i<matrix.length;i++) {
                if (matrix[i][matrix[0].length-1]>=target) {
                    break;
                }
            }
            if (i == matrix.length)
                return false;
            int l = 0, r = matrix[0].length-1;
            //折半查找
            while (l <= r) {
                if (target == matrix[i][(l+r)/2])
                    return true;
                else if (target > matrix[i][(l+r)/2])
                    l = (l+r)/2+1;
                else 
                    r = (l+r)/2-1;
            }
            return false;
        }
    }
  • 相关阅读:
    理解事件驱动select,poll,epoll三种模型
    谈谈对线程与进程的理解
    5-3.首行缩进
    5-2.行高
    5-1.字间距
    4-6.字体样式重置
    4-5.字体风格
    4-4.字体粗细
    4-3.字体颜色设置
    4-2.字体设置
  • 原文地址:https://www.cnblogs.com/fisherinbox/p/5430339.html
Copyright © 2011-2022 走看看