`
cuiran
  • 浏览: 80855 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java与旋转二维数组

    博客分类:
  • java
阅读更多
package an.xin.er.wei;

/**
* 输入一个数,要求打出其旋转二维数组,如: 输入3 结果为: 1 8 7 2 9 6 3 4 5
*
* 输入4 结果为: 1 12 11 10 2 13 16 9 3 14 15 8 4 5 6 7
*
* @author Cuiran
* @date 2008-11-5 10:22
*
*/
public class Array2D {

/**
* @param args
*/
public static void getErWer() {
int myInt[][] = new int[5][10];
// 遍历。给数组中的每一个数组赋值
for (int i = 0; i < myInt.length; i++) {
for (int j = 0; j < myInt[0].length; j++) {
myInt[i][j] = i * j;
}
}
System.out.println("myInt.length=" + myInt.length
+ ", myInt[0].length=" + myInt[0].length);
// 输出数组每一维的下限和上限
for (int i = 0; i < myInt.length; i++) {
for (int j = 0; j < myInt[0].length; j++) {
System.out
.println("myInt[" + i + "][" + j + "]=" + myInt[i][j]);
}
}
}

/**
* 典型的蛇形矩阵刚学JAVA, 还不会使用二维数组,用一维数组模拟的 改变n就可以生成不同大小的矩阵 输入一个数
*
* @param args
*/

public static void getSnake(int n) {
int layer = 0;// 圈数有外向内
int i = 0, j = 0;// 起始位置
int direct = 1;// 初始方向,0,1,2,3---上下左右

int a[] = new int[n * n];
for (int num = 1; num <= n * n; num++) {
a[i * n + j] = num;
// 向direct指定的方向移动,遇边转向
switch (direct) {
case 1:// 下
if (++i >= n - 1 - layer) {
i = n - 1 - layer;
direct = 3;// 转右
}
break;
case 3:// 右
if (++j >= n - 1 - layer) {
j = n - 1 - layer;
direct = 0;// 转上
}
break;
case 0:// 上
if (--i <= layer) {
i = layer;
direct = 2;// 转左
}
break;
case 2:// 左
if (--j <= layer + 1) {
j = layer + 1;
direct = 1;// 转下
layer++;// 圈数加1

}
break;
default:
break;
}

}
for (i = 0; i < n; ++i) {
for (j = 0; j < n; ++j) {
System.out.print(a[i * n + j] + "\t");
}
System.out.println();
}

}

public static void print(long startNo, int r, int c, int n) {
long reslt;
if (c == 0) {
System.out.print(startNo + r + "\t");
} else if (c == n - 1) {
System.out.print(startNo + 3 * (n - 1) - r + "\t");
} else if (r == n - 1) {
System.out.print(startNo + r + c + "\t");
} else if (r == 0) {
System.out.print(startNo + 4 * (n - 1) - c + "\t");
} else {
startNo += n * n - (n - 2) * (n - 2);
print(startNo, r - 1, c - 1, n - 2);
}
}

/**
* 不用数组写了一个,比较灵活,就是运行起来慢一点。
*
*/
public static void getSnake2() {
int n = 10;
long startNo = 1;
long timeStart = System.currentTimeMillis();
for (int r = 0; r < n; r++) {
for (int c = 0; c < n; c++) {
print(startNo, r, c, n);
}
System.out.println();
}
long timeEnd = System.currentTimeMillis();
System.out.println("Total   Time:" + (timeEnd - timeStart));

}

public static void main(String[] args) {
// getSnake(4);
getSnake2();
}

}
分享到:
评论

相关推荐

    java旋转二维数组实例

    主要介绍了java旋转二维数组,以实例形式较为详细的讲述了旋转二维数的原理与实现方法,需要的朋友可以参考下

    leetcode二维数组-programming_exercises:leetcode、nowcoder刷题之路

    leetcode二维数组 编程练习 包含常见的编程网站的练习习题(leetcode、牛客等)----待完成中... 也同时包含复习面试的编程练习 该src/main/java目录下,以文件夹命名,表示的是不同的来源 每个文件均可单独运行 其他...

    Java常用ArrayUtile工具类

    判断数组是否为空(null或长度为0) 连接两个数组 翻转数组 在数组中查找指定元素的索引 判断指定元素是否在数组中 打印数组内容 计算数组中所有元素的和 ...旋转二维数组90度 寻找目标数组是否为原数组的子集

    JAVA 北极星二维变换 矩阵做法

    矩阵类的作用主要有:将二维数组转化为矩阵,矩阵的加法,矩阵的乘法; 变换类的主要方法有:平移变换、旋转变换、缩放变换、错切变换、对称变换,这些变换都是传入相关需要操作的参数来得到要进行的变换的矩阵。 ...

    Java面试 Java超级经典100问题 Java高级开发工程师必备 Java面试宝典

    二维数组中查找目标值、4.替换字符串中的空格。5.从尾到头打印链表.6.由前序和中序遍历重建二叉树.7.用两个栈实现队列8.求旋转数组的最小数字、9.斐波那契数列的第n项(青蛙跳台阶)10.二进制中1的个数、11.数值的整数...

    javalruleetcode-leetcode:LeetCode题解C++11、Java8、Python3、Scala版题解:rocket:

    1.4.二维数组及滚动数组 题号 描述 状态 1.5.数组的旋转 题号 描述 完成状态 1.6.特定顺序遍历二维数组 题号 C++11 完成状态 1.7.二维数组变换 题号 描述 完成状态 1.8.前缀和数组 题号 描述 完成状态 模板题-前缀和...

    剑指offer(java版67题)

    面试题 1:二维数组中的查找(考点: 数组) 1 面试题 2:替换空格(考点: 字符串) 2 面试题 3:从尾到头打印链表(考点: 链表) 2 面试题 4:重建二叉树(考点: 树) 4 面试题 5:用两个栈实现队列(考点: 栈和...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    Leetcode扑克-jianzhi-offer:剑指offer-Java题解

    二维数组中的查找 - [行列递增的二维数组搜索]- leetcode 240 替换空格 从尾到头打印链表 重建二叉树 - [用前序和中序遍历序列构建二叉树] - leetcode 105 用两个栈实现队列 - [使用栈实现队列] - leetcode 232 旋转...

    n*n的矩阵旋转

    实现一个n*n矩阵的向右旋转90度 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 右旋转90度后的效果: 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4

    tictactoeleetcode-JavaPlayground:Java注解、线程使用、设计模式、算法训练等

    二维数组 新年混乱 DNA补体 嗡嗡声 笔记本电池寿命 字符串字谜 二维数组 袜子商人 排序和 LeetCode Java 问题 两和 Java高级 注释 线程用法 流和可选 可选基础知识 平面图 并行流 流收集 流映射减少 流对象 删除重复...

    Java-Work:我在学习 Java 语言时使用 Java 完成的各种工作

    图像处理器 - 使用二维数组旋转和翻转图像。 Dog Walking Club - 创建多个狗主人对象,然后匹配兼容的狗主人,以便他们可以一起散步。 房地产 - 为房地产经纪人创建 Java GUI。 允许他们添加和定制房屋、公寓和...

    Coding-Interviews:Coding-Interviews(剑指offer代码)

    Interviews(剑指offer Java代码)二维数组中的查找替换空格从尾到头打印链表重建二叉树用两个栈实现队列旋转数组的最小数字斐波那契数列跳台阶变态跳台阶矩形覆盖二进制中1的个数数值的整数次方调整数组顺序使奇数...

    java范例开发大全源代码

     实例67 二维数组的创建与使用 92  实例68 矩阵转置 93  实例69 奇数阶幻方 94  实例70 求方阵对角线之和 96  实例71 矩阵的加法 97  实例72 矩阵的减法 98  实例73 快递报价单 99  5.3 数组...

    Java范例开发大全 (源程序)

     实例67 二维数组的创建与使用 92  实例68 矩阵转置 93  实例69 奇数阶幻方 94  实例70 求方阵对角线之和 96  实例71 矩阵的加法 97  实例72 矩阵的减法 98  实例73 快递报价单 99  5.3 数组的排序 ...

    java范例开发大全

    实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 实例72 矩阵的减法 98 实例73 快递报价单 99 5.3 数组的排序 101 实例74 冒泡排序法 ...

    javalruleetcode-leetcode_by_py:他妈的leetcode与python

    二维数组中的查找 中等 剑指offer05 替换空格 简单 剑指offer06 从头到尾打印链表 简单 剑指offer07 重建二叉树 中等 剑指offer09 用两个栈实现队列 简单 剑指offer10-1 斐波那契数列 简单 剑指offer10-2 青蛙跳台阶...

Global site tag (gtag.js) - Google Analytics