看到网友发的一道面试题 试作解答
要求打印出:
int i = 5;
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
int i = 6;
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
思路很简单
把数据按照螺旋矩阵的路线装进数组
然后再打印出来
public class PrintSquare {
private int[][] getArray(int n) {
if (n > 0) {
int[][] array = new int[n][n];
int x = 0;
int y = 0;
int xStart = 0;
int xEnd = n - 1;
int yStart = 0;
int yEnd = n - 1;
for (int i = 1; i <= n * n; i++) {
array[y][x] = i;
if (y == yStart && x < xEnd) {// 横向前进
x++;
if (x == xEnd) {
yStart++;
}
} else if (y < yEnd && x == xEnd) {// 纵向前进
y++;
if (y == yEnd) {
xEnd--;
}
} else if (y == yEnd && x > xStart) {// 横向倒退
x--;
if (x == xStart) {
yEnd--;
}
} else if (y > yStart && x == xStart) {// 纵向倒退
y--;
if (y == yStart) {
xStart++;
}
}
}
return array;
}
return null;
}
public void printSquare(int n) {
if (n > 0) {
int[][] arr = getArray(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}
public static void main(String[] args) {
PrintSquare test = new PrintSquare();
test.printSquare(5);
System.out.println();
test.printSquare(6);
}
}
分享到:
相关推荐
笔试面试题 一道面试题关于信息系统的问答和注意事项 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的...
在解答这样的面试题时,应聘者需要考虑以下几点: - **盒模型**:理解`width`、`padding`和`border`如何影响元素的实际尺寸。 - **浮动布局**:`float`属性可以使元素脱离正常文档流,使其可以与其他元素并排显示。 ...
根据给定的信息,我们可以推断出这是一道与算法相关的面试题目。虽然提供的部分内容看起来较为混乱,但结合标题、描述及标签,我们可以尝试解析并构建一个相对完整的算法问题。 ### 题目背景 一家知名公司在招聘...
根据题目提供的信息,这是一道涉及SQL查询技巧的微软数据库面试题。虽然题目中的SQL代码与题目描述不完全对应,但我们可以基于题目描述中的信息来分析这个问题并给出解答。 ### 题目背景 题目描述指出,有一个表,...
《一道面试题的思考——深入理解memcpy函数的实现》 在C语言中,`memcpy`函数是一个非常重要的内存操作函数,用于将一块内存区域的数据复制到另一块内存区域。在面试中,这个问题常用来测试候选人的基础知识、逻辑...
针对这道面试题,可能的问题方向包括: 1. **Ajax的基本工作原理**:解释Ajax是如何通过XMLHttpRequest对象实现异步通信的,涉及的步骤包括创建对象、打开连接、设置请求方法、发送请求、接收响应和处理数据。 2. ...
### hadoop2面试题 - 2012腾讯笔试的一道算法题 #### 背景与题目概述 本文档提供了2012年腾讯笔试中一道关于字符串处理的算法题,该题目要求将字符串中的所有大写字母移动到字符串的末尾,同时保持其他字符的相对...
Java面试题涵盖了许多核心知识点,包括基础技术、项目经验、逻辑推理和SQL查询。下面将对这些方面进行详细的解析。 1. **基础技术题** - **UML图**:UML(统一建模语言)有多种图表,包括类图、对象图、用例图、...
根据提供的文件内容,我们可以整理出一系列与SQL相关的面试题及解答思路。这些题目涵盖了SQL的基础查询、数据处理、以及更高级的功能应用等多方面内容,非常适合准备数据库工程师面试的求职者进行练习。下面是针对每...
提供的压缩包文件中包含的是微软等名企的数据结构与算法面试题,分为不同版本,覆盖了100道题目,可以按照版本号逐步学习和解题。例如: 1. **[答案修正]精选微软数据结构+算法面试100题[V0.2版,前20题].pdf** - ...
对于每一道面试题,不仅要给出答案,还要思考其背后的原理和优化空间。同时,关注行业动态,了解新技术和最佳实践,这将使你在面试中显得更有远见和洞察力。 记住,面试不仅仅是检验你的技能,也是你了解公司、展现...
【腾讯校招面试题解析】 腾讯作为国内知名的互联网巨头,其校园招聘的面试题往往具有代表性,涵盖了多种技能和知识领域。2016年的腾讯校招面试题主要分为问答题和选择题,旨在考察候选人的创新思维、逻辑推理、行业...
本篇文章将详细探讨一道经典的微软面试题——链表的反转,并通过分析其背后的逻辑和技术要点,帮助读者更好地理解和掌握这一问题。 #### 题目背景与解析 题目要求:给定一个链表的头结点,反转该链表,并返回反转...
1. 该题是一道编码与解码的问题。从给定的规则来看,每个字母向后移动了两位。所以FAITH -> F(2)=H, A(2)=C, I(2)=K, T(2)=V, H(2)=J,因此FAITH解码后为CJKVJ,答案是无对应选项。 2. 这是一道基础数学运算题。7/2...
1. **烧绳计时**:这是一道时间计算题。要计时一个小时十五分钟,可以使用三根绳子。首先点燃第一根绳子的两端,它会在30分钟后烧完;接着在第一根绳子烧完后立即点燃第二根绳子的另一端,这样第二根绳子会在45分钟...
以下是对几道经典的智力面试题的详细解答: 1. **5升和6升水壶取3升水问题**:这是一个典型的数学问题,通过一系列操作可以实现。首先,将6升壶装满水,然后倒入5升壶,剩下1升。将5升壶清空,然后把6升壶中的1升...
【程序员面试题精选100题】是一份中文Word文档,包含了针对程序员的100道面试题目,这些题目详细解答了如何准备编程面试,尤其是技术面试环节。面试是求职过程中至关重要的一环,它能让雇主直接评估应聘者的技能和...
2. 面试题:这个文件名可能代表一个包含所有面试题目的文档,可能以PDF、Word或Excel等格式存在,每一道题目可能都有详细的描述,涵盖C#语言基础、.NET框架、ASP.NET、ADO.NET、WPF、Windows服务、多线程、设计模式...
以下是对这些面试题的详细解答: 1. 软件测试是团队工作的原因在于它是保证软件质量的最后一道防线,能发现并修复潜在的问题,避免产品上线后的故障。 2. 测试过程通常包括测试计划、设计(如测试用例和数据)、...