初学小白,仅供参考
给定一个 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