1 二维数组中的查找

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 
思路:
利用二维数组由上到下,由左到右递增的规律,
那么选取右上角或者左下角的元素a[row][col]与target进行比较,
当target小于元素a[row][col]时,那么target必定在元素a所在行的左边,
即col--;
当target大于元素a[row][col]时,那么target必定在元素a所在列的下边,
即row++;
 
 1 public class Solution {
 2     public boolean Find(int target, int [][] array) {
 3         int rows = 0;
 4         int cols = array[0].length -1;
 5          while(rows<=array.length-1 && cols>=0){
 6             if(target == array[rows][cols]) return true;
 7             else if(target > array[rows][cols] ) rows ++ ;
 8                 else cols --;
 9             
10         }
11         return false;
12     }
13 }

 

public class Solution {
    public boolean Find(int target, int [][] a) {
        int row = 0;
        int col = a[0].length-1;
        while(true){
            if(row>=a.length||col<0) return false;
            if(target==a[row][col]) return true;
            else if(target<a[row][col]) col--;
            else row++;
        }
   }
}

 

 

更新 20180303

 

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     # array 二维列表
 4     def Find(self, target, a):
 5         # write code here
 6         rows = len(a)
 7         cols = len(a[0])
 8         i = 0
 9         j=cols - 1
10         while i < rows and j >= 0:
11            if(a[i][j] > target):
12                 j -= 1
13            elif(a[i][j] < target):
14                 i += 1
15            else:
16                 return True
17         return False
18   

 

posted @ 2017-10-27 22:24  乐乐章  阅读(151)  评论(0编辑  收藏  举报