• [LeetCode]Search a 2D Matrix


    Question :

    •   

      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.

    • Idea : 
        把matrix視為一維陣列處理。
    • Code:
      bool searchMatrix(int** matrix, int matrixRowSize, int matrixColSize, int target) {
          
          int low = 0, high=matrixRowSize*matrixColSize-1;
          int mid;
          while(low <= high) {
              mid = low + (high - low )/2; // avoid to buffer overflow.
          
              if(matrix[mid/matrixColSize][mid%matrixColSize] < target)
                  low = mid + 1; 
              else if(matrix[mid/matrixColSize][mid%matrixColSize] > target)
                  high = mid -1;
              else
                  return true;
          }
          return false;
      }
      

        

  • 相关阅读:
    记录。短信网关.
    TP 笔记~
    FUCK IE FLASH(inline hook)
    API HOOK(MessageBoxA)
    inline hook MessageBox(2)
    c#线程中使用 dataset
    匈牙利算法解决二分图最大匹配
    C#:Array类的排序
    C#:属性
    C#:结构
  • 原文地址:https://www.cnblogs.com/bittorrent/p/4770442.html
Copyright © 2020-2023  润新知