package javaLeetCode.medium;

public class RotateImage_48 {

	public static void main(String[] args) {
int[][] matrix = { {5, 1, 9,11}, { 2, 4, 8,10}, {13, 3, 6, 7},{15,14,12,16} };
rotate_2(matrix);
}// end main() /**
* Conventional idea.<br>
* 1. It's rotating diagonally<br>
* 2. 2. Rotating column.<br>
* 3. Print the array of matrix.<br>
* */
/*
* Test Data: Example 1: Given input matrix = { {1,2,3}, {4,5,6}, {7,8,9} },
* rotate the input matrix in-place such that it becomes: { {7,4,1},{8,5,2},{9,6,3} }
*
* Example 2:
* Given input matrix = { {5, 1, 9,11}, { 2, 4, 8,10}, {13, 3, 6, 7},{15,14,12,16} },
* rotate the input matrix in-place such that it becomes: { {15,13, 2, 5}, {14,3, 4, 1}, {12, 6, 8, 9}, {16, 7,10,11} }
*/
public static void rotate_1(int[][] matrix) {
if(matrix==null) {
return;
}//end for
//=====================================================
// 1. It's rotating diagonally
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
if (i < j) {
matrix[i][j] = matrix[i][j] ^ matrix[j][i];
matrix[j][i] = matrix[i][j] ^ matrix[j][i];
matrix[i][j] = matrix[i][j] ^ matrix[j][i];
} else {
continue;
} // end if
} // end for
} // end for //2. Rotating column.
for(int i=0;i<matrix.length;i++) {
int length = matrix[i].length;
for(int j=0;j<length/2;j++) {
matrix[i][j] = matrix[i][j] ^ matrix[i][length-j-1] ;
matrix[i][length-j-1] = matrix[i][j] ^ matrix[i][length-j-1] ;
matrix[i][j] = matrix[i][j] ^ matrix[i][length-j-1] ;
}//end for
}//end for
//=====================================================
//3. Print the array of matrix.
for (int x[] : matrix) {
for (int y : x) {
System.out.print(y + " ");
} // end for
System.out.println();
} // end for
}// end rotate() /**
*
* */
public static void rotate_2(int[][] matrix) {
if(matrix==null) {
return;
}//end for
//=====================================================
int n = matrix.length;
for (int i = 0; i < n / 2; ++i) {
for (int j = i; j < n - 1 - i; ++j) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][i];
matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
matrix[j][n - 1 - i] = tmp;
}//end for
}//end for //=====================================================
//Print the array of matrix.
for (int x[] : matrix) {
for (int y : x) {
System.out.print(y + " ");
} // end for
System.out.println();
} // end for
}// end rotate()
}// end RotateImage_48

Java实现 LeetCode_0048_RotateImage的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

随机推荐

  1. hdu2336 (匈牙利最大匹配+二分)

    Describe 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. Input 输入一个整数T表示T组数据. 对于每组数据 ...

  2. js理论-函数中的Arguments对象

    详情参考:https://github.com/mqyqingfeng/Blog/issues/14 如果: arguments和实参的关系,以及arguments的属性 附上代码和注解 functi ...

  3. Linux常用命令~新手必知

    ifconfig查看本机IP ls  查看当前目录下所有文件及文件夹 ll      以详细方式显示所有文件与文件夹.(相当于 ls -l 命令) pwd     显示当前目录路径 cd  /user ...

  4. iframe中请求页面而session失效时页面跳转问题

    iframe中请求页面而session失效时页面跳转问题 分类: Web2009-12-11 15:01 656人阅读 评论(0) 收藏 举报 sessioniframejsp 有时候做了就忘了,我记 ...

  5. React Native 架构演进

    写在前面 上一篇(React Native 架构一览)从设计.线程模型等方面介绍了 React Native 的现有架构,本篇将分析这种架构的局限性,以及 React Native 正在进行的架构升级 ...

  6. 论文阅读:Reducing Transformer Depth On Demand With Structured Dropout

    Introduction 这篇paper是做Transformer压缩的,但其实bert的核心也就是transformer,这篇paper的实验里也做了bert的压缩.作者的主要工作是提出了Layer ...

  7. Java——Json字符串与Object互转

    public static void JacksonTest() {//推荐 //{"MNG001":[{"ID":"1","PW ...

  8. JS中的bind 、call 、apply

    # 一 .bind 特点: ### 1.返回原函数的拷贝,我们称这个拷贝的函数为绑定函数 ### 2.将函数中的this固定为调用bind方法时的第一个参数,所以称之为绑定函数.注意是名词而非动词. ...

  9. PHPstudy 修改数据库上传大小

    要修改的地方已经标出来了 直接修改为你需要的值即可:

  10. 关于pytest使用allure生成报告时,报一堆警告和缺少XX模块

    因为最新的pytest 支持*.josn的用例报告,卸载旧的模块使用新的即可: 需要移除旧模块:pip uninstall pytest-allure-adaptor, 并安装:pip install ...