看到网友发的一道面试题 试作解答
要求打印出:
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);
}
}
分享到:
相关推荐
c++面试必考题以及解答 c++核心技术说明 清晰易懂
数据结构和算法名企面试题目,里面的test是其中一道的解答
对网上流传的一版面试题摘录了下来,并对其中某些有问题的答案进行了修改最后还补充了一道关于值类型和引用类型的问题,解答的很详细. 希望大家看后多多指正疏漏
解答一:bind,将当前匿名函数指向this,将i当参数传入 var init = function(){ var obj = document.getElementById('text'); for(var i=0;i<obj.children.length;i++){ obj.children[i].addEventListener('...
(朗讯的一道笔试题) 答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行; 如果你需要加入一段在main退出后执行的代码,可以使用atexit()函数,注册一个函数。 语法: #include ...
其中包括了很多非常有意思且经典的趣味逻辑题,有一些还出现在有些公司的面试题中,值得一看,可以锻炼一下思维,每一道题都有分析与解答。
每一道题都有具体的分析和解答,有利于提高大家都面试水平。
leetcode ...而我在自己做完一道题之后,又仔细研究学习别人的答案,找到正确答案中最简洁且直击要害的那一个,并在关键地方添加注释,这样再有不会的题的时候就不需要看着别人的答案却又看不懂了。
欢迎大家提供面试题,发送至邮箱: 。 成功采纳后,如果你面试遇到其他问题,笔者可以提供免费解答服务。 今日原题 第一题: 。 try { ( async function ( ) { a ( ) . b ( ) . c ( ) } ) ( ) } catch ( e ) { ...
一道Python面试题的几种解答: 两个元祖T1=(‘a’, ‘b’), T2=(‘c’, ‘d’),请使用匿名函数将其转变成[{‘a’: ‘c’}, {‘b’: ‘d’}] 方法一: >>> T1 = ('a', 'b') >>> T2 = ('c', 'd') >>> list(map(lambda ...
但是没有包含”连续子序列最大积值“这样的题目,并且”最长递增子序列“给出的解答不是最优的,这两个题目大家可以额外思考一下,面试中也很常见。 另外,面试过程中也会遇到很多与系统相关的知识性的题目,如流水...
每一道题都附带了 JUnit4 单元测试,位于test包中。当然,测试用例还不够丰富,欢迎补充。 当有多种解法时,会以 filename2.java 来命名。每个文件内会大致说下思路和复杂度。 目前还在刷题中,当前进度:70/151