把一个一维数组转化成二维数组的算法
今天,有个同事提到了把一个一维数组转化为二维数组的算法。他用了两个循环,一个用来初始化结果数组,一个用来把原数组的值填充到结果数组。我觉得,只需一个循环就可以了,说白了,这个转换就是一个映射,就是把一个一维坐标映射为一个二维坐标。
算法:
def div_arr(src_arr,div_len) if div_len >= src_arr.size src_arr end row_index = -1 result_arr = [] src_arr.each_index{ |i| column_index = i % div_len if column_index == 0 row_index += 1 result_arr[row_index] = [] end result_arr[row_index][column_index] = src_arr[i] } result_arrenddef div_arr(arr, div_len)if div_len <= 0 or div_len == 1 or div_len >= arr.sizereturn [arr]endres = []arr.each_index{ |i|x,y = i / div_len,i % div_lenres[x] = [] if not res[x]res[x][y] = arr[i]}resend class Arraydef div(len)if len <= 1 or len >= self.sizereturn [self]endres=[]self.each_index{ |i|x,y = i / len, i % lenres[x] = [] if not res[x]res[x][y] = self[i]}resendend