题解 | #向左移动牛群II#
向左移动牛群II
https://www.nowcoder.com/practice/2467ddd80a2942abbaa752f3c874dd79?tpId=354&tqId=10595862&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @param k int整型 * @return int整型二维数组 */ public int[][] rotateII (int n, int k) { int[][] result = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int ii = (i + k) % n; int jj = (j + k) % n; result[i][j] = n * ii + jj + 1; } } return result; } }
本题知识点分析:
1.数学模拟【矩阵模拟】
2.数组遍历和赋值
本题解题思路分析:
1.在旋转矩阵中,原矩阵的第(i, j)个元素旋转后的位置为第((i + k) mod n, (j + k) mod n)个元素,其中mod运算表示取模运算。
2.元素的值可以通过计算(n * ii + jj + 1)得到,其中ii是旋转后的行索引,jj是旋转后的列索引,加1是因为元素的值是从1开始逐个递增的。
时间复杂度分析:该函数嵌套了两个循环,因此时间复杂度为O(n^2),其中n为矩阵的维度。
本题使用编程语言: Java
高频面试算法题解 文章被收录于专栏
高频面试算法题解,每天一小步,人生一大步,跟着一起刷起来!