|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lu315702820 于 2024-8-14 20:48 编辑
问题:请编程找出矩阵中的幸运数字。
说明:假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是 0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字。
假设给定的矩阵如下:
matrix = [[10, 36, 52],
[33, 24, 88],
[66, 76, 99]]
那么输出结果应该是 66(同时满足同一行的所有元素中最小,并且在同一列的所有元素中最大)。
我编写的代码:
- matrix = [[10, 36, 52],
- [33, 24, 88],
- [66, 76, 99]]
- row_min = [1024] * 3
- col_max = [0] * 3
- for i in range(len(matrix)):
- for j in range(len(matrix[0])):
- if row_min[i] > matrix[i][j]:
- row_min[i] = matrix[i][j]
- else:
- row_min[i] = row_min[i]
-
- [color=Red] if col_max[i] < matrix[j][i]:
- col_max[i] = matrix[j][i]
- else:
- col_max[i]= col_max[i][/color]
- for i in range(len(matrix)):
- for j in range(len(matrix[0])):
- if matrix[i][j] == row_min[i] and matrix[i][j] == col_max[i]:
- print(matrix[i][j])
复制代码
我的想法是循环的时候,可以逐个让初始化的col_max列表每一个元素去分别和matrix的每一列的元素进行比较:
比如 1)当i = 1, j =0, col_max[1] = 0 < matrix[0][1] = 36,所以col_max[1] = 36
2)当 i = 1, j =1, col_max[1] = 36 > matrix[1][1] = 24, 所以col_max[1] = 36
3)当 i = 1, j =2, col_max[1] = 36 < matrix[2][1] = 76, 所以col_max[1] 被替换为76,
通过这样的方式也可以逐个将每一列最大的元素填入col_max中,但是输出不了结果;给出的标准答案我也看了,也理解,但是就是不知道为什么我尝试的这个方法做不出来。
|
|