剑指offer第二天之二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
java:
package offer;
public class Solution {
/*
data:2020516
author:魏振东
fun:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,
每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,
判断数组中是否含有该整数。
* */
public static boolean Find(int target, int [][] array) {
boolean found = false;
// 选取右上角的点
// 行
int row = 0;
// 列
int cols = array[0].length-1;
while(row<array.length&&cols>=0)
{
if(array[row][cols]==target)
{
found = true;
return found;
}
// 如果数组中的数大于target,则列向左移动
else if(array[row][cols]>target)
{
cols--;
}
// 如果数组中的数小于target,表示target可能在这列,则向下移动
else{
row++;
}
}
return found;
}
public static void main(String args[])
{
int [][] array =new int[][]{{1,2,8,9},{4,7,10,13}};
for(int i =0;i<array.length;i++){
for(int j =0;j<array[0].length;j++){
System.out.print(array[i][j]);
}
System.out.println();
}
System.out.println( Find(7,array));
}
}
python :
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
found = False
row = 0
cols = len(array[0]) - 1
while row < len(array) and cols >= 0:
if array[row][cols] == target:
found = True
break
elif array[row][cols]>target:
cols -= 1
else:
row += 1
return found
c++:
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
bool found = false;
int row = 0;
int cols = array[0].size()-1;
while(row<array.size()&&cols>=0)
{
if(array[row][cols]==target)
{
found = true;
break;
}
else if(array[row][cols]>target)
{
cols--;
}
else
{
row++;
}
}
return found;
}
};