• 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]
    ]

    这道题还是比较简单的,在一个二维数组查找一个指定元素。可以直接遍历这个数组,不过已经排好序,可以先查找在哪一行,然后在对该行进行二分查找

     1 public class Solution {
     2     public boolean searchMatrix(int[][] matrix, int target) {
     3         boolean foundIndex = false;
     4         int index = 0;
     5         for(int i = 0; i < matrix.length - 1; i++){
     6             if(matrix[i][0] <= target && matrix[i + 1][0] > target){
     7                 foundIndex = true;
     8                 index = i;
     9                 break;
    10             }
    11         }//for
    12         if(foundIndex){
    13             return searchByBS(matrix[index], target);
    14         }
    15         else
    16             return searchByBS(matrix[matrix.length - 1], target);
    17     }
    18     
    19     /**
    20      * 对数组进行二分查找
    21      * @param num
    22      * @return
    23      */
    24     public boolean searchByBS(int num[],int  target){
    25         int low = 0;
    26         int high = num.length - 1;
    27         int middle;
    28         while(low <= high){
    29             middle = (low + high) / 2;
    30             if(num[middle] == target)
    31                 return true;
    32             else if(num[middle] > target){
    33                 high = middle - 1;
    34             }else{
    35                 low = middle + 1;
    36             }//else if
    37         }//while
    38         return false;
    39     }
    40 }
  • 相关阅读:
    C语言I博客作业03
    C语言I博客作业02
    macwingIDE python3.5 配置
    JAVA必会算法插入排序
    java匿名内部类的另一个用途
    JAVA必会算法选择排序
    Mac elasticsearch 5.2.2 单机双节点配置
    JAVA必会算法二分查找法
    AOP 事物连接,记忆连接数据库,连接池
    线程的意义与一些常见面试问题
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4216380.html
Copyright © 2020-2023  润新知