zoukankan      html  css  js  c++  java
  • 每日编程-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 };
  • 相关阅读:
    $.ajax
    es6--之箭头函数
    vuex相关知识点
    grunt---grunt_test 测试用例
    git2--常用命令
    git命令
    百万程序员的苦恼-选择VB.NET还是C#
    在Linux上运行C#
    C#中的cookie编程
    C#编程让Outlook乖乖交出帐户密码
  • 原文地址:https://www.cnblogs.com/linhaowei0389/p/6764004.html
Copyright © 2011-2022 走看看