剑指offer

来源:互联网 发布:手机日记本数据库表 编辑:程序博客网 时间:2024/06/05 19:16

1.在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。(java/python实现)

java实现:

public class Solution {    public boolean Find(int target, int [][] array) {          //  for(int i=0;i<array.length;i++){          //      for(int j=0;j<array[0].length;j++){          //          if(array[i][j]==target){           //             return true;           //         }                       //     }           // }        int row=array.length-1;        int col=0;        //逻辑一定要清楚,不要搞反了,以下是从左下角开始按条件遍历        while(row>=0&&col<array[0].length){            if(array[row][col]<target){                col++;            }            else if(array[row][col]>target){                row--;            }            else {                return true;             }                   }        return false;    }}

python实现:

class Solution:    # 也是从左下角开始遍历    def Find(self, target, array):        m = len(array)-1        n = len(array[0])-1        i = 0        j = m         while i<=n and j>=0:            if array[i][j]<target:                i+=1            elif array[i][j]>target:                j-=1            else:                return True         return False
以上就是java和python实现的主要代码,有更好的解决方法欢迎指教。

原创粉丝点击