题解 | #向左移动牛群II#

向左移动牛群II

https://www.nowcoder.com/practice/2467ddd80a2942abbaa752f3c874dd79?tpId=354&tqId=10595862&ru=/exam/company&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Fcompany

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @param k int整型
     * @return int整型二维数组
     */
    public int[][] rotateII (int n, int k) {
        // write code here
        int index = 1;
        int[][] arr = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                arr[i][j] = index;
                index++;
            }
        }

        int[][] result = new int[n][n];
        index = 0;
        while (index < k) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    result[i][(j - 1 + n) % n] = arr[i][j];
                }
            }
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    arr[i][j] = result[i][j];
                }
            }

        
            for (int i = n - 1; i >= 0; i--) {
                for (int j = 0; j < n; j++) {
                    result[(i - 1 + n) % n][j] = arr[i][j];
                }
            }
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    arr[i][j] = result[i][j];
                }
            }
            index++;
        }
        return result;
    }
}

知识点:

数组元素的移动

解题思路:

先初始化一个新的二维数组,然后使用一个循环来模拟k次移动。每次移动,它将当前牛的编号放入新位置,并根据规则计算新的位置。然后,它会继续填充剩余的牛群直到所有位置都被填充。

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务