【Java】旋转NxN的矩阵90°

原创 2015年07月07日 21:36:37

给定一个由NxN矩阵表示的图像,其中每个像素的大小为4个字节,编写一个方法,将图像旋转90°。不占用额外内存空间能否做到?

将矩阵旋转90°,第一个想到的做法就是一层一层进行旋转,将上边移到右边,右边移到下边,下边移到左边,左边移到上边。

那么如果要交换就是把上边复制到一个大小为N的数组中,然后将左边移到上边,下边移到左边,右边移到下边,等等。这样要占用的内存大小是O(N)。

实际上有一个更好的办法,是按照索引一个一个进行交换:

for i = 0 to N
    temp = top[i]
    top[i] = left[i]
    left[i] = bottom[i]
    bottom[i] = right[i]
    right[i] = temp
从最外一层逐层向里,在每一层上执行上述交换,空间复杂度为1,时间复杂度为O(n2)

public class rotate {
	public void rotate(int[][] matrix, int n)
	{
		for (int layer = 0; layer < n/2; layer++)
		{
			int first = layer;
			int last = n-1-layer;
			for (int i = first; i < last; i++)
			{
				int offset = i - first;
				int top = matrix[first][i];
				matrix[first][i] = matrix[last - offset][first];
				matrix[last - offset][first] = matrix[last][last - offset];
				matrix[last][last - offset] = matrix[i][last];
				matrix[i][last] = top;
			}
		}
	}
}


Java 数组转置 方阵顺时针旋转90度

一维数组转置(首尾交换) public class array { public static void main(String args[]){ int data [] =new int [...
  • peach90
  • peach90
  • 2014年10月24日 08:55
  • 3866

矩阵------顺时针打印矩阵+顺时针旋转矩阵+之字形打印矩阵(Java)

顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打...

图的BFS和DFS原理及实例分析(java)

BFS和DFS是图的两种遍历方式,是最简单的图搜索算法。本文将给出给出BFS和DFS的以下几种实现方式: 1、使用队列Queue实现图的BFS遍历 2、递归实现图的DFS遍历 3、使用栈Stac...

netty学习02-几个核心类以及其介绍

1.package org.jboss.netty.bootstrap;     Bootstrap:初始化Channel的辅助类,为子类提供通用的数据结构。ServerBootstrap:创建...

1.6 给出一张图片,表示为NXN的居然,每个像素点为4字节。写一个函数实现将这张图片旋转90°。

1.6给出一张图片,表示为NXN的居然,每个像素点为4字节。写一个函数实现将这张图片旋转90°。 解答1.6: 图片的旋转可以将像素划分成一圈一圈,然后从最外层一圈一圈上来旋转。旋转某一圈的某个元...

迅雷笔试题---矩阵逆时针旋转90°

昨天去参加了迅雷的笔试,主要分为客观题和主观题,客观题无非就是选择填空,但是很恶心的选择题有多选;主观题就是给个算法题目,让你写出代码。 矩阵的逆时针旋转90°就是一道主观题,并且题目要求不能用额外空...
  • dosined
  • dosined
  • 2013年10月12日 10:56
  • 347

矩阵顺时针旋转90°、180°、270°

问题及代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:sdoj.cpp * 作 者:李楠 * 完成日期...

Android 手机展示照片 会有90°旋转的问题的解决方案

问题场景: 1.IOS系统的苹果手机竖屏拍照或者从相册选择竖屏情况下拍的照片上传到tfs服务器安卓手机下载展示的时候是旋转了90°的图片,但是苹果手机展示没有问题.         我去网上进行原因的...

OpenCV 90°旋转

顺时针旋转90°思路| 1 | 2 | T | 1 | 4 | Y轴镜像 | 4 | 1 | --------- -------> --------- ...

iOS 图片上传旋转90°

在做项目时我们经常要对图片进行一些处理,以达到性能优化或满足需求。常见的情形有以下几种 拉伸图片 项目中使用的图片素材如果能通过拉伸获得就尽量这样去做。这样做有两个显而易见的好处,一是能够...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】旋转NxN的矩阵90°
举报原因:
原因补充:

(最多只允许输入30个字)