LeetCode--旋转图像(Scanner输入问题)

这篇博客探讨了如何在Java中处理用户输入的二维数组,并展示了一个顺时针旋转二维数组的算法。通过示例代码,作者演示了如何读取用户输入的二维数组并打印,以及实现原地旋转90度的功能,强调了原地旋转的限制和实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LeetCode上面没有输入输出练习,但是面试笔试一般需要自己输入输出案例:
于是自己写了这个数组输出:

import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        System.out.println("二维数组的行数:");
        Scanner scan=new Scanner(System.in);
        int r=scan.nextInt();
        System.out.println("二维数组的列数:");
        int c=scan.nextInt();
        System.out.println("输入数组:");
        int[][]matrix=new int[r][c];
        scan.nextLine();//用来跳过行列后的回车符
        for(int i=0;i<r;i++){
            for(int j=0;j<c;j++){
                matrix[i][j]=scan.nextInt();
                System.out.print(matrix[i][j]+",");
            }
            System.out.println("");
        }
    }
}

输出

二维数组的行数:
3
二维数组的列数:
3
输入数组:
1 2 3 4 5 6
1,2,3,
4,5,6,

注意测试输入最后一位数字后面不要带空格!!!
因为next()方法不能得到带空格的字符串
试一试一维数组的吧

public class Main {
    public static void main(String[] args) {
        System.out.println("一维数组的行数:");
        Scanner scan=new Scanner(System.in);
        int r=scan.nextInt();
        System.out.println("输入数组:");
        int[]matrix=new int[r];
        scan.nextLine();//用来跳过行列后的回车符
        for(int i=0;i<r;i++) {
            matrix[i] = scan.nextInt();
            System.out.print(matrix[i] + ",");
        }
            System.out.println("");
        }
    }

测试:

一维数组的行数:
4
输入数组:
1 2 3 4
1,2,3,4,

get!!

以后做题老老实实加上测试,来看LeetCode的48题,旋转图像
要求:
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
原地就是不能新增数组来存储转换后的数据
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]

在这里插入图片描述

import java.util.Scanner;
class Solution {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int x = sc.nextInt();
            int y = sc.nextInt();
            int[][] arr = new int[x][y];
            for(int i = 0;i < x;i++){
                for(int j = 0;j < y ;j++){
                    arr[i][j] = sc.nextInt();
                }
            }
            rotate(arr);
            for(int i = 0;i < x ;i++){
                for(int j = 0;j < y ;j++){
                    System.out.println(arr[i][j] + " ");
                }
            }
        }
        }
    public static void rotate(int[][] matrix) {
        int length = matrix.length;
        for(int i = 0; i<length/2;i++)
        {
            int [] temp = matrix[i];
            matrix[i] = matrix[length - i -1];
            matrix[length - i - 1] = temp;
        }
        for(int i = 0; i<length;i++){
        for(int j = i; j < matrix[0].length ;j++){
            int temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
        }
}
}

贴上本地IDE结果:
在这里插入图片描述
get !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值