• 每日编程-20170425


    题目描述
    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

    请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    解答:

    本来以为是二维数组的二分查找,哪知写完了才发现思路不正确

    如果是二分查找,需要保证每一行的末尾元素要小于下一行的开头元素才行

    这道题只是简单的在前多少行中(这些行的第一个元素要小于等于target)对每行进行二分查找而已

     1 class Solution {
     2 public:
     3     
     4     template <class T>
     5     int compareT(T t1, T t2) {
     6         if (t1 == t2)
     7             return 0;
     8         else
     9         {
    10             if (t1 < t2)
    11                 return -1;
    12             else
    13                 return 1;
    14         }
    15     }
    16     template <class T>
    17     int BinarySearch(const vector<T> &v, T key) {
    18         int low = 0, high = v.size() - 1, mid;
    19         while (low <= high)
    20         {
    21             mid = (low + high) / 2;
    22             switch (compareT(key, v[mid]))
    23             {
    24             case 0:
    25                 return mid;
    26             case 1:
    27                 low = mid + 1;
    28                 break;
    29             case -1:
    30                 high = mid - 1;
    31                 break;
    32             }
    33         }
    34         return v.size();
    35     }
    36     
    37     bool Find(int target, vector<vector<int> > array) {
    38         for (auto i = 0; i < array.size() && array[i].size() >0 && array[i][0] <= target; i++)
    39         {
    40             if (BinarySearch(array[i], target) != array[i].size())
    41             {
    42                 return true;
    43             }
    44         }
    45         return false;
    46     }
    47 };
  • 相关阅读:
    30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
    SAP Marketing Cloud功能简述(一) : Contacts和Profiles
    如何使用点击超链接的方式打开Android手机上的应用
    1036. Boys vs Girls (25)
    Yet another A + B
    1033. To Fill or Not to Fill (25)
    1032. Sharing (25)
    1021. Deepest Root (25)
    1017. Queueing at Bank (25)
    1016. Phone Bills (25)
  • 原文地址:https://www.cnblogs.com/linhaowei0389/p/6764004.html
Copyright © 2020-2023  润新知