把N*N矩阵顺时针旋转90°输出(2018携程校招笔试题)
题目:输入一个N*N矩阵,顺时针旋转打印出来。
例如:
输入:
1 2 3
4 5 6
7 8 9
输出:
7 4 1
8 5 2
9 6 3
这里使用两个for循环就完成了,数组的题目,经常都是for循环就可以解决的,代码中主函数都是为了处理输入,因为矩阵的大小未知,只能读取第一行来判断。
代码如下:
package xiecheng;import java.util.Scanner;public class RotateMatrix90 {public static void main(String[] args) throws Exception {//第一步:这一部分是处理输入的,从命令行读取一行Scanner in = new Scanner(System.in);String s = in.nextLine(); //读取一行输入String[] s1 = s.split(" "); //按空格分割字符串,得到字符串叔祖//第二步:根据第一行数据长度创建合适的矩阵,并将第一行的数据读入int[][] matrix = new int[s1.length][s1.length];for(int i = 0; i <= s1.length - 1; i++) {matrix[0][i] = Integer.valueOf(s1[i]);}//第三步:读入剩下的N-1行数据int rows = 1;while(rows <= s1.length - 1) {for(int i = 0; i <= s1.length - 1; i++) {matrix[rows][i] = in.nextInt();}in.nextLine(); //这是读取换行符,最好不要省略rows++;}//第四步:调用自定义的函数来进行处理rotate_90_degree(matrix);//第五步:打印结果printMatrix(matrix);}//把数组顺时针旋转90°输出public static void rotate_90_degree(int[][] matrix) throws Exception {if (matrix == null) {throw new Exception();}int len = matrix.length - 1;for(int i = 0; i <= len / 2; i++) { //控制矩阵外环for(int j = i ; j <= len - i - 1; j++) { //控制环的每一行移动,注意每一行的第一个元素移动到了最后一位,// 而且最后一位不需要移动//首先临时存储,避免被覆盖int temp1 = matrix[i][j];int temp2 = matrix[j][len-i];int temp3 = matrix[len - i][len - j];//System.out.println(matrix[len-j][i] + "," + temp1 + "," + temp2 + "," + temp3);//然后把值进行移动matrix[i][j] = matrix[len-j][i]; //更新上边一行,从左到右matrix[j][len-i] = temp1; //更新右边一列,由上到下matrix[len-i][len-j] = temp2; //更新下面一行,从右到左matrix[len-j][i] = temp3; //更新左边一列,由下到上}}return;}//顺序打印矩阵元素private static void printMatrix(int[][] matrix) {for(int i=0;i<matrix.length;i++) {for(int j=0;j<matrix.length;j++) {System.out.print(matrix[i][j]+" ");}System.out.println();}}
}
把N*N矩阵顺时针旋转90°输出(2018携程校招笔试题)相关推荐
- 2018有赞校招笔试题
昨天晚上参加了有赞校招Java类笔试,题目总体难度适中,这里我给大家分享一下这次笔试的三个编程题. 第一题: 1.题目 2.思路 我对这个题目的基本思路是用空格分隔字符串得到字符串数组,该字符串数组元 ...
- CVTE的c语言面试题,2018 CVTE 前端校招笔试题整理
昨天晚上(7.20)做了CVTE的前端笔试,总共三十道题,28道多选题,2道编程题 .做完了之后觉得自己基础还是不够扎实,故在此整理出答案,让自己能从中得到收获,同时给日后的同学一些参考. 首先说一下 ...
- 拼多多2018届毕业生校招笔试题
列表补全 题目 在商城的某个位置有一个商品列表,该列表是由L1.L2两个子列表拼接而成.当用户浏览并翻页时,需要从列表L1.L2中获取商品进行展示.展示规则如下: 用户可以进行多次翻页,用offset ...
- 2018网易游戏校招笔试题
2017年4月15日的网易游戏实习生校招题目,3道题,2小时,对于没有经过ACM训练的人来说时间挺紧,最后没做完.但是毕竟猪场挑高手,自己技不如人,还需要多多努力.回头自己整理了下自己做得题目.可能有 ...
- 2018年小米校招笔试题
我们设计了整数三角形,每一行都比上一行多出一个数,而每个数字都等于它上方与左上方两个数字之和,给出一个数字,求最先出现在哪一行 #include<iostream> #include< ...
- 2018 年百度校招笔试题详解
C++ 后置++ 重载 只会调用A的func() 记住大端是反过来的,小端是正的 虚函数不能申请为构造函数 C++ 多态 仔细看,C选项是C语言的内存分配. 注意是选错误的,注意一定是 剑指offer ...
- 2018阿里实习校招笔试题
有一个9位数的正整数x,去除掉中间的第5位的数字得到整数y(例如x=123456789,则y=12346789),求问存在多少个这样的x,使得x可以被y整除?(9000个,暴力求解出来的,不知道有没有 ...
- 矩阵顺时针旋转90°、180°、270°
问题及代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:sdoj.cpp * 作 者:李楠 * 完成日期:201 ...
- 编写程序python、实现将矩阵顺时针旋转90°_Java实现矩阵顺时针旋转90度的示例...
实现矩阵的转置较为容易,只需要将纵横下标互换即可.实现矩阵旋转稍微麻烦一点. 解题思路: 矩阵转换90度,则原矩阵的纵下标转变为新矩阵的横下标:原矩阵的横下标转变为新矩阵的纵下标,并且顺序相反. pu ...
- 矩阵顺时针旋转90度
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! ---- ...
最新文章
- Docker 1.7.0 深度解析
- 大型网站架构系列:分布式消息队列
- Ubuntu 12.04 安装设置gcc4.4
- 查python答案的软件-中国大学MOOC的APP慕课用Python玩转数据答案查题公众号
- 让一个软件系统同时支持多个多种数据库灵活配置,让客户可以任意配置各个核心数据库部分...
- 最流行6种微服务RPC技术,你一定要知道
- seay代码审计工具_“代码审计”了解一下
- 百人计划(图形部分)Bump Mapping(凹凸贴图映射技术)
- 奥斯卡大乌龙,然而人工智能也预测《爱乐之城》为最佳影片
- python求一元三次方程的根_方程的计算机处理924_Fortran
- Java计算10000天出生纪念日
- Vue3 + TS(一)- 邂逅Vue
- 数控编程软件可模拟刀具在三维曲面上的实时加工过程
- POJ1830开关问题
- Windows目录结构、移动、复制、搜索文件及文件夹等
- 大众点评CAT开源监控系统剖析
- 精准化测试之:jacoco实现增量代码覆盖率统计
- Servlet技术总结
- 《时生》BY东野圭吾
- 购买计算机的英语作业,《计算机专业英语》作业.doc