832. 翻转图像-ruby解法

初学小白,仅供参考

给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。

水平翻转图片就是将图片的每一行都进行翻转,即逆序。

例如,水平翻转 [1,1,0] 的结果是 [0,1,1]。
反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。

例如,反转 [0,1,1] 的结果是 [1,0,0]。
 

示例 1:

输入:image = [[1,1,0],[1,0,1],[0,0,0]]
输出:[[1,0,0],[0,1,0],[1,1,1]]
解释:首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];
     然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]
示例 2:

输入:image = [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
输出:[[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解释:首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]];
     然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
 

代码:

def flip_and_reverse_array(input_array)
  unless input_array.length >= 1 && input_array.length <= 20
    raise "input_array为过长或空数组数组"
  end
  output_array = Array.new
  i = 0
  input_array.each do |array_line|
    #每行数组翻转
    single_array_reverse = array_line.reverse
    # p "&&&"
    # p single_array_reverse

    j = 0
    #元素反转
    single_array_reverse.each do |array_element|
      if array_element == 0
        single_array_reverse[j] = 1
      elsif array_element == 1
        single_array_reverse[j] = 0
      else
        #数字不是0或者1,则数字不合格
        raise "input_array[#{i}][#{j}]:#{input_array[i][j]}是错误数字"
      end
      # p  "***"
      # p single_array_reverse
      j += 1
    end
    #反转后的数组存入输出数组
    output_array[i] = single_array_reverse
    i += 1
  end
  #返回输出
  output_array
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值