首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
Oracle
›
矩阵-旋转图像
返回列表
发新帖
矩阵-旋转图像
[复制链接]
发表于 2025-10-27 20:45:09
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
复制
代码
输入
:二维数组
输出
:void
思绪
:tempMatrix[j][n - i - 1] = matrix
[j]
class Solution {
public void rotate(int[][] matrix) {
//二维数组为n*n的方阵
int n = matrix.length;
// 使用辅助数组
int[][] tempMatrix = new int[n][n];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
tempMatrix[j][n - i - 1] = matrix[i][j];
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
matrix[i][j] = tempMatrix[i][j];
}
}
}
}
复制
代码
但是原题分析不能使用别的一个数组来旋转图像,以是使用新方法
class Solution {
public void rotate(int[][] matrix) {
//二维数组为n*n的方阵
int n = matrix.length;
//保证不重复不遗漏
for(int i = 0; i < n / 2; i++){
//j
for(int j = 0; j < (n + 1) / 2; j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[n - j - 1][i];
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
matrix[j][n - i -1] = temp;
}
}
}
}
复制
代码
图中四个位置的值更换,可以使用temp变量暂时
存储
,使用两数互换的方法举行四个数互换
关键在于为了使互换不重复和不遗漏
,留意代码中i和j的上限值
二刷使用新方法:
用翻转取代旋转
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for(int i = 0; i < n / 2; i++){
for(int j = 0; j < n; j++){
//上下水平翻转
int temp = matrix[i][j];
matrix[i][j] = matrix[n - i - 1][j];
matrix[n - i - 1][j] = temp;
}
}
for(int i = 0; i < n; i++){
for(int j =0; j < i; j++){
//主对角线翻转
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
}
复制代码
回复
使用道具
举报
返回列表
浏览过的版块
Java
人工智能
物联网
王海鱼
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表