-2

我有两个数组,max_of_row(存储每行中的最大值)和 min_of_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]
4

1 回答 1

1
max_rows = mat.map(&:max)
# => [10, 7, 10]

min_cols = mat.transpose.map(&:min)
# => [2, 4, 7]
于 2013-05-12T18:43:55.137 回答