首页 > 其他分享 >#yyds干货盘点# 名企真题专题:顺时针打印数字矩阵

#yyds干货盘点# 名企真题专题:顺时针打印数字矩阵

时间:2022-12-30 18:31:09浏览次数:66  
标签:yyds 名企 mat 真题 int 矩阵 cols sb endRow

1.简述:

描述

给定一个数字矩阵,请设计一个算法从左上角开始顺时针打印矩阵元素

输入描述:

输入第一行是两个数字,分别代表行数M和列数N;接下来是M行,每行N个数字,表示这个矩阵的所有元素;当读到M=-1,N=-1时,输入终止。

输出描述:

请按逗号分割顺时针打印矩阵元素(注意最后一个元素末尾不要有逗号!例如输出“1,2,3”,而不是“1,2,3,”),每个矩阵输出完成后记得换行

示例1

输入:

3 3
1 2 3
4 5 6
7 8 9
-1 -1

输出:

1,2,3,6,9,8,7,4,5

2.代码实现:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(br.ready()) {
String[] s = br.readLine().split(" ");
int m = Integer.parseInt(s[0]);
int n = Integer.parseInt(s[1]);
if(m == -1 && n == -1) break;
int[][] matrix = new int[m][n];
for(int i = 0; i < m; i++) {
String[] temp = br.readLine().split(" ");
for(int j = 0; j < n; j++)
matrix[i][j] = Integer.parseInt(temp[j]);
}
printMatrix(matrix, m, n);
}
}
private static void printMatrix(int[][] mat, int rows, int cols) {
if(mat == null || rows == 0 || cols == 0) return;
StringBuilder sb = new StringBuilder();
int min = Math.min(rows, cols);
for(int s = 0; 2*s < min; s++) {
int endRow = rows-1-s;
int endCol = cols-1-s;
for(int j = s; j <= endCol; j++) //直接打印第一行
sb.append(mat[s][j]+",");
if(endRow > s) { //存在第二行的条件
for(int i = s+1; i <= endRow; i++)
sb.append(mat[i][endCol]+",");
if(endCol > s) { //存在第三行的条件
for(int j = endCol-1; j >= s; j--)
sb.append(mat[endRow][j]+",");
if(endRow > s+1) { //存在第四行的条件
for(int i = endRow-1; i > s; i--)
sb.append(mat[i][s]+",");
}
}
}
}
//打印
System.out.println(sb.substring(0,sb.length()-1));
}
}

标签:yyds,名企,mat,真题,int,矩阵,cols,sb,endRow
From: https://blog.51cto.com/u_15488507/5981160

相关文章

  • 华北水利水电大学 2023考研 967数据结构真题
    评价:整体很简单,类似于大学期末考试难度华北水利水电大学2023考研967数据结构真题回忆版1 选择题10道 20分 给一个abaabaa,请问next数组? 循环队列为空的条件是?r......
  • #yyds干货盘点#linux下安装curl
    下载curl下载地址:​​https://curl.haxx.se/download...​​你也可以下载旧版的curl:​​https://curl.haxx.se/download/​​wgethttps://curl.haxx.se/download/curl-7.30......
  • #yyds干货盘点#linux命令测网速
    常用的测试工具有fast、speedtest、iPerf。fast是Netflix提供的一项服务,这不仅可以通过命令行来使用,而且可以直接Web端使用。iPerf是一个网络性能测试工具,它可以测试TCP和U......
  • #yyds干货盘点# LeetCode程序员面试金典:下一个数
    题目:下一个数。给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。示例1:输入:num=2(或者0b10)输出:[4,1]或者([0b100,0b1])示例2:......
  • #yyds干货盘点# LeetCode程序员面试金典:整数转换
    题目:整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。示例1:输入:A=29(或者0b11101),B=15(或者0b01111)输出:2示例2:输入:A=1,B=2输出:2代码实现:classS......
  • #yyds干货盘点# react笔记之学习之空列表提示
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • #yyds干货盘点# LeetCode程序员面试金典:二进制数转字符串
    题目:二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。示例1:输入:0.......
  • #yyds干货盘点# LeetCode程序员面试金典:翻转数位
    题目:给定一个32位整数num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。示例1:输入:num=1775(110111011112)输出:8示例2:输入:num=......
  • #yyds干货盘点#nodejs 后端 token 权限问题
    话不多说,直接上代码登录接口exportdefaultclassAuthController{staticasynclogin(req,res){try{const{name,password}=req.body;if(!nam......
  • #yyds干货盘点#Linux设置环境变量
    我们通过设置Linux的环境变量,可以方便我们的程序调用,比如我想把NodeJs加入环境变量/root/nodejs/bin/永久性更改对所有用户生效加入环境变量vim/etc/profile我们在最后一行......