博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spiral Matrix II
阅读量:4099 次
发布时间:2019-05-25

本文共 2448 字,大约阅读时间需要 8 分钟。

题目地址:

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,

Given n = 3,

You should return the following matrix:

[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]

题目叫螺旋矩阵,一看示例就明白是什么意思,这种题目的大致思想就是往矩阵里填数字,然后再输出,关键点就是控制好方向和边界就行了。

public class SpiralMatrixII {
public static int[][] generateMatrix(int n) { int[][] result = new int[n][n]; int k = 1; int sqrN = n * n; boolean goLeft = true; boolean goDown = false; boolean goRight = false; boolean goUp = false; int i = 0; int j = 0; int block = n - 1; while (k <= sqrN) { if (goLeft) { if (j < block) { result[i][j] = k; j++; } else if (j == block) { //到达边界则修改方向 result[i][j] = k; goLeft = false; goDown = true; i++; } } else if (goDown) { if (i < block) { result[i][j] = k; i++; } else if (i == block) { result[i][j] = k; goDown = false; goRight = true; j--; } } else if (goRight) { if (j > n - 1 - block) { result[i][j] = k; j--; } else if (j == n - 1 - block) { result[i][j] = k; goRight = false; goUp = true; block--; i--; } } else if (goUp) { if (i > n - 1 - block) { result[i][j] = k; i--; } else if (i == n - 1 - block) { result[i][j] = k; goUp = false; goLeft = true; j++; } } k++; } return result; } public static void print2DArray(int[][] arr) { for (int i = 0; i < arr.length; i++) { System.out.print("["); for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + " "); } System.out.println("]"); } } public static void main(String[] args) { print2DArray(generateMatrix(6)); }}

以上算法时间复杂度为: O( n2 )

转载地址:http://iihii.baihongyu.com/

你可能感兴趣的文章
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>
DirectX11 光照演示示例Demo
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
HTML5的表单验证实例
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>