二维数组的查找程序员
在一个二维数组中(每一个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。面试
题目要求中能够发现有两个突破口:
1.从行看,从左往右依次递增正则表达式
(1)当咱们从第一行第一个元素开始比较的时候,会发现不管是往右仍是往下都是递增,比较没有意义
(2)故从第一行最后一个元素进行比较时候咱们发现,小于时往左走,大于时候往下走。算法
图例(4*4的二维数组):数组
def Find(target, array): # write code here if array==[]: return False LieShu=len(array[0]) HangShu=len(array) i=0 j=LieShu - 1 while i < HangShu and j >= 0: if target < array[i][j]: j-=1 elif target > array[i][j]: i+=1 else: return True return Fals
class Solution { public: bool Find(int target, vector<vector<int> > array) { int row = array.size(); int col = array[0].size(); for(int i=0;i<row;i++){ for(int j=0;j<col;j++) { if(target==array[i][j]) { return true; } } } return false; } };
public boolean find(int[][] array,int target) { if (array == null) { return false; } int row = 0; int column = array[0].length-1; while (row < array.length && column >= 0) { if(array[row][column] == target) { return true; } if(array[row][column] > target) { column--; } else { row++; } } return false; }
注:面试季来了,无论是做为面试者仍是之后做为面试官,了解算法这门程序员之间的沟通方式都是很是必要的。找过工做的朋友应该都据说过《剑指offer》,虽然书中只有六十多道题目,可是道道都是经典。微信
若是是单纯的面试需求,剑指offer的优先级确定是在Leetcode以前,总的说它有三个优势:数据结构
它的缺点是:机器学习
剑指offer刷题交流群ide
扫码添加微信,必定要备注研究方向+地点+学校+昵称(如机器学习+上海+上交+汤姆)函数
▲长按加群
The End▼往期精彩回顾▼CNN+BLSTM+CTC的验证码识别从训练到部署机器学习算法(一) | Adaboost算法详解Tensorflow 3w+star例子带你学重磅|pytorch实现CS224N模型