我有两个数组,max_of_row(存储每行中的最大值)和min_of_col(存储每个col中的最小值)。
我将这些初始化为max_of_row = []和min_of_col = []。
这就是我现在填写它的方式:
max_rows = []
min_cols = []
for i in 0..mat.length-1
for j in 0..mat[0].length-1
val = mat[i][j]
max_rows[i] = [max_rows[i] || val, val].max
min_cols[j] = [min_cols[j] || val, val].min
end
end
我正在使用它看起来很奇怪:[max_rows [i] || val,val] .max。有没有更好的方法呢?
我之前:
if max_rows[i].nil? || max_rows[i] < val
max_rows[i] = val
end
if min_rows[j].nil? || min_cols[j] > val
min_cols[j] = val
end
(我认为)更糟糕,因为它更长。我是对的,我应该尝试改变这些吗?如果是这样,有没有更好看的方式呢?
修改
以下是数组的示例:
mat =
[[2, 5, 10],
[3, 4, 7],
[6, 10, 9]]
修改
以下是预期值:
max_of_row = [10, 7, 10]
min_of_col = [2, 4, 7]
答案 0 :(得分:1)
max_rows = mat.map(&:max)
# => [10, 7, 10]
min_cols = mat.transpose.map(&:min)
# => [2, 4, 7]