更新时间:2022-09-20 23:31:41
杨氏矩阵查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二位数组和一个整数,判断数组中是否含有该整数。
C#语言实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public static bool yangShiFind( int [,] array, int num)
{
if (array == null )
return false ;
int m = array.Rank; // 行数-1,即最大行标
int n = array.GetLength(1); // 列数
int row = 0;
int col = n - 1;
while (row <= m && col >= 0)
{
if (num < array[row, col])
col -= 1;
else if (num > array[row, col])
row += 1;
else
return true ;
}
return false ;
}
|
Java语言实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public static boolean yangShiFind( int [][] array, int num){
if (array == null )
return false ;
int m = array.length;
int n = array[ 0 ].length;
int row = 0 ;
int col = n- 1 ;
while (row < m && col >= 0 )
{
if (num < array[row][col])
col -= 1 ;
else if (num > array[row][col])
row += 1 ;
else
return true ;
}
return false ;
}
|
Python语言实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def yang_shi_find(lst, num):
if lst is None :
return None
m = len (lst)
n = len (lst[ 0 ])
row = 0
col = n - 1
while row < m and col > = 0 :
if num < lst[row][col]:
col - = 1
elif num > lst[row][col]:
row + = 1
else :
return (row, col)
return None
|