码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer_by牛客网

时间:2017-09-06 18:21:11      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:sed   bfd   想法   targe   view   --   class   return   lap   

2017/9/6

二维数组中的查找 m*n

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

找是否存在target

我的想法,for循环判断每行首尾,再进行二分

O(m*logn)

技术分享
 1 public class Solution {
 2     public boolean Find(int target, int [][] array) {
 3         if (array == null || array.length == 0 || array[0].length == 0) {
 4             return false;
 5         }
 6         int row = array.length;
 7         int col = array[0].length;
 8         for (int i = 0; i < row; i++) {
 9             int start = 0;
10             int end = col - 1;
11             if (array[i][0] <= target && array[i][end] >= target) {
12                while (start + 1 < end) {
13                    int mid = start + (end - start) / 2;
14                     if (array[i][mid] == target) {
15                         return true;
16                     } else if (array[i][mid] > target) {
17                         end = mid;
18                     } else{
19                         start = mid;
20                     }
21                 } 
22                 if (array[i][start] == target) {
23                     return true;
24                 }
25                 if (array[i][end] == target) {
26                     return true;
27                 }
28             }
29             
30         }
31         return false;
32     }
33 }
View Code

 答案:

从左下角(或右上角,进行二分)时间复杂度O(m+n)

技术分享
 1 public class Solution {
 2     public boolean Find(int target, int [][] array) {
 3         if (array == null || array.length == 0 || array[0].length == 0) {
 4             return false;
 5         }
 6         int row = array.length;
 7         int col = array[0].length;
 8         int i = 0;
 9         int j = col - 1;
10         while (i < row && j >= 0) {
11             if (array[i][j] == target) {
12                 return true;
13             } else if (array[i][j] > target) {
14                 j--;
15             } else {
16                 i++;
17             }
18         }
19         return false;
20     }
21 }
View Code

 

剑指offer_by牛客网

标签:sed   bfd   想法   targe   view   --   class   return   lap   

原文地址:http://www.cnblogs.com/yunyouhua/p/7485960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!