LeetCode - 566. Reshape the Matrix 重塑矩阵 简单题

发布于 2024-09-06 13:02:21 字数 1325 浏览 10 评论 0

题目

直接填充

这个方法很简单,遍历 nums 中的元素,一个一个填充到新数组即可。

class Solution {

  public int[][] matrixReshape(int[][] nums, int r, int c) {
    if (nums.length == 0 || nums[0].length == 0)
      return nums;
    int n = nums.length;
    int m = nums[0].length;
    if (n * m != r * c) return nums;

    int[][] res = new int[r][c];
    int p = 0, q = 0;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        res[p][q] = nums[i][j];
        if (++q == c) {
          ++p;
          q = 0;
        }
      }
    }
    return res;
  }
}

坐标对应

这个是考虑一重循环,找坐标的对应的关系,在矩阵中,一维遍历的 nums[i] 在二维中横坐标为 i/c ,纵坐标为 i % c ,所以可以用一个一重循环遍历。

class Solution {

  public int[][] matrixReshape(int[][] nums, int r, int c) {
    if (nums.length == 0 || nums[0].length == 0)
      return nums;
    int n = nums.length;
    int m = nums[0].length;
    if (n * m != r * c)
      return nums;
    int[][] res = new int[r][c];
    for (int i = 0; i < n * m; i++)
      res[i / c][i % c] = nums[i / m][i % m];
    return res;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

打小就很酷

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文