说个思路 由于不能使用辅助空间,又因为打印是必须从左到右,从上到下的,那么我们掌握的信息就只有n,i,j n是输入的数,i,j是当前要输出元素的坐标,也就是说,我们要做一个(n, i, j) => t(输出数字)的映射。 确定输出数字t我们需要的是它的圈数和在圈中的位置。 圈数:假设输出矩阵正中心有一个点(k, k),那么距离值max(abs(k-i), abs(k-j))可以确定圈数round,然后可以计算出1~round-1圈的总数psum 位置pos: 根据圈数确定圈的左上角起点,然后计算出pos 最后输出数字t = psum+pos 总之就是一些很麻烦的映射关系,理论可行,但是代码估计很难懂~ 不保证可行,因为我没写代码验证╮(╯▽╰)╭
点赞 1

相关推荐

牛客网
牛客企业服务