用java实现螺旋数组
接收数组的行数和列数,返回正序和倒序的螺旋数组
package cn.baokx;
public class Test {
public static void main(String[] args) {
printArray(getSpiralArray(5,5,false));
System.out.println("**************");
printArray(getSpiralArray(5,5,true));
}
//返回螺旋数组
public static int [][] getSpiralArray(int m,int n,boolean reverse){
//定义一个长度为m*n的数组。并按顺序初始化
int [] numArray = new int[m*n];
for(int i = 0 ; i < numArray.length ; i++){
if(!reverse){
numArray[i] = (i+1);
}else{
numArray[i] = (numArray.length-i);
}
}
//初始化数组下标
int foot = 0;
//声明螺旋数组
int[][] array = new int[m][n];
//计算"层数",以m和n中较小的数为准
int layer = m<n?
m:n;
layer = (layer%2==1)?(layer / 2 + 1):(layer / 2);
// 从外层到里层循环
for (int i = 0; i < layer; i++) {
//从左到右
for (int j = i; j < n - i; j++) {
array[i][j] = numArray[foot++];
if(foot>=m*n){
return array;
}
}
// 从上到下
for (int j = i + 1; j < m - i; j++) {
array[j][n - i - 1] = numArray[foot++];
if(foot>=m*n){
return array;
}
}
// 从右到左
for (int j = n - i - 2; j >= i; j--) {
array[m - i - 1][j] = numArray[foot++];
if(foot>=m*n){
return array;
}
}
// 从下到上
for (int j = m - i - 2; j > i; j--) {
array[j][i] = numArray[foot++];
if(foot>=m*n){
return array;
}
}
}
return array;
}
//打印二维数组
public static void printArray(int [][] array){
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
if(array[i][j]<10){
System.out.print("0");
}
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
用java实现螺旋数组的更多相关文章
- [leetcode]54. Spiral Matrix2生成螺旋数组
import java.util.Arrays; /** * Created by lvhao on 2017/7/6. * Given an integer n, generate a square ...
- Java反射遍历数组
日志中有时候需要查看数组中的值,但是重载很多的打印函数,觉得很别扭.所以想通过反射,获取数组中的值,打印出来.Java提供了数组反射操作的类,之前没有关注过,提供的方法简单易用. public sta ...
- 慕课网-安卓工程师初养成-6-3 如何使用 Java 中的数组
来源:http://www.imooc.com/code/1525 Java 中操作数组只需要四个步骤: 1. 声明数组 语法: 或者 其中,数组名可以是任意合法的变量名,如: 2. 分配空间 简 ...
- Java中的数组操作进阶
package com.mi.array; import java.util.Arrays; /** * System.arraycopy(i, 0, j, 0, i.length);这种复制会覆盖目 ...
- 如何使用 Java 中的数组
Java 中操作数组只需要四个步骤: 1. 声明数组 语法: 数据类型[ ] 数组名: 或者 数据类型 数组名[ ]: 其中,数组名可以是任意合法的变量名,如: 2. 分配空间 简单地说,就是指 ...
- Java之组合数组1
我们先说"数组",数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素. 一.一维数组的定义 type arrayName[]; 其中类型(type ...
- Java比较器对数组,集合排序一
数组排序非常简单,有前辈们的各种排序算法,再加上Java中强大的数组辅助类Arrays与集合辅助类Collections,使得排序变得非常简单,如果说结合比较器Comparator接口和Collato ...
- 【转】java中byte数组与int类型的转换(两种方式)----不错
原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...
- java随机数与数组的使用。
java随机数与数组的使用. 一:题目 二 代码: public class Students { int number; // 学号 int State ; // 年级 ...
随机推荐
- C/C++ 浮点数比较问题
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50255623 Never try to ...
- [Hyperapp] Interact with the State Object through Hyperapp Action functions
Hyperapp is an ultra lightweight (1kb), minimal, functional, JavaScript library for building UIs. It ...
- uva725_一道水题(优化到了29ms)
//////////////////////////////////////////////////////////////////////////////////////////////////// ...
- iOS企业证书网页分发全过程具体解释(图文并茂史无前例的具体哦)
iOS企业证书网页分发全过程具体解释 苹果的企业级证书公布的应用.是不用设备授权就可以直接安装,而且不限设备上限. 为了方便分发,苹果有协议实现通过网页链接直接下载安装企业级的应用. 首先须要说明它的 ...
- MyEclipse打包可运行的jar包
详细步骤: Export... -> java -> Runnable JAR file Launch configuration:选择main方法所在的文件/类 Export desti ...
- 使用XMLHttpRequest解析json
不适用内函数或者promise的方式,可以在外部提取到json数据 <!DOCTYPE html> <html lang="en"> <head> ...
- bzoj2768: [JLOI2010]冠军调查(双倍经验最小割)
2768: [JLOI2010]冠军调查 题目:传送门 题解: 双倍经验(1934) 代码: #include<cstdio> #include<cstring> #inclu ...
- hdoj--4857--逃生(拓扑排序+反向建图)
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- [NOI.AC 2018NOIP模拟赛 第三场 ] 染色 解题报告 (DP)
题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色 ...
- 【参考】JDBC执行存储过程的四种情况
[1].只有输入IN参数,没有输出OUT参数 [2].既有输入IN参数,也有输出OUT参数,输出是简单值(非列表) [3].既有输入IN参数,也有输出OUT参数,输出是列表 [4].输入输出参数是同一 ...