用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 ; // 年级 ...
随机推荐
- 【hdu 6321】Dynamic Graph Matching
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] DP 设f[i][j]表示前i个操作,已经匹配了的点的状态集合为j的方案数 对于+操作 有两种情况. 1.这条边作为匹配的边 2.这 ...
- Servlet体验之旅(二)——Session、Cookie
我们知道Session和Cookie都是用于会话跟踪的,仅仅是实现的方式不大一样,那么他们到底有什么不同呢?以下跟着我脚步来了解一下: Session.Cookie的含义: Session 一种ser ...
- 华硕 X201E 拆机
每次笔记本拆机,装好之后.就会发现多了几个螺丝,忘了从哪拧下来了 以下记录下华硕 X201E 清灰拆机过程 1:电脑正面图 2:背面图,一共9个螺丝 3:背面的9个螺丝拧下来,把后盖沿着缝隙扣下来 w ...
- leveldb学习:sstable(2)
block写入:block_builder block.h和.cc里定义了block的entry存储格式和restart,提供了entry的查找接口以及迭代器.那么怎样往写block里写entry呢? ...
- (二)Ribbon(负载均衡的客户端)+Rest
前面讲了服务的注册与发现,微服务项目会把项目的各个业务需求划分成几个模块来单独提供服务,各服务间的调用都是采用Http Restful来实现,但是在SpringClound中服务间的调用有两种方式:一 ...
- NOIP卡常数技巧
NOIP卡常数技巧 https://blog.csdn.net/a1351937368/article/details/78162078 http://www.mamicode.com/info-de ...
- Linux Screen命令使程序远离断网影响
linux中强大的screen命令2008-12-02 21:53今天发现了一个“宝贝”,就是Linux的screen命令,对于远程登录来说,不仅提供了类似于nohup的功能,而且提供了我非常喜欢的“ ...
- C++之易混淆知识点一-----static详解
1.const.mutable与volatile的区别:const表明内存被初始化以后,程序将不能对它进行修改.volatile则表明,即使程序代码没有对内存单元进行修改,但是里面的值也可能会发生变化 ...
- Java数据库连接——PreparedStatement的使用
首先了解Statement和PreparedStatement的区别: 由此可见,一般使用PreparedStatement. 操作数据库SU(Course表),其中Course属性有Cno,Cnam ...
- PCL例程调试错误之缺少flann-config.cmake
编译环境和PCL版本为:win7-x64 + MSVC2013 + PCL1.8.0-win32-MSVC2013. 调试PCL官网例程Cluster Recognition and 6DOF Pos ...