前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode-数据结构-数组-第4天

LeetCode-数据结构-数组-第4天

作者头像
布衣者
发布2021-09-07 11:37:42
3170
发布2021-09-07 11:37:42
举报
文章被收录于专栏:布衣者博客

566. 重塑矩阵

在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。 具体题目链接

Python

代码语言:javascript
复制
class Solution:
    def matrixReshape(self, mat: List[List[int]], r: int, c: int) -> List[List[int]]:
        if r*c!=len(mat)*len(mat[0]):
            return mat
        ans,ans_r,t=[],[],0
        for i in mat:
            for j in i:
                ans_r.append(j)
                t+=1
                if t==c:
                    t=0
                    ans.append(ans_r)
                    ans_r=[]
        return ans

思路:简单题。每循环c个则创建一个ans_r,并将列表添加到ans中。

GO

代码语言:javascript
复制
func matrixReshape(nums [][]int, r int, c int) [][]int {
    n, m := len(nums), len(nums[0])
    if n*m != r*c {
        return nums
    }
    ans := make([][]int, r)
    for i := range ans {
        ans[i] = make([]int, c)
    }
    for i := 0; i < n*m; i++ {
        ans[i/c][i%c] = nums[i/m][i%m]
    }
    return ans
}

思路:这个思路很厉害,通过一次m*n的遍历,通过除数和商形式实现换行形式。

118. 杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。 具体题目链接

Python

代码语言:javascript
复制
class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        ret = []
        for i in range(numRows):
            row = []
            for j in range(0, i + 1):
                if j == 0 or j == i:
                    row.append(1)
                else:
                    row.append(ret[i - 1][j] + ret[i - 1][j - 1])
            ret.append(row)
        return ret

思路:每一行的第一个和最后一个都是1,其余等于上方两个之和,采用列表形式来储存杨辉三角。

GO

代码语言:javascript
复制
func generate(numRows int) [][]int {
    ans := make([][]int, numRows)
    for i := range ans {
        ans[i] = make([]int, i+1)
        for j := 0; j <=i; j++ {
            if j==0 || j==i{
                ans[i][j] = 1
            }else{
                ans[i][j] = ans[i-1][j] + ans[i-1][j-1]
            }
        }
    }
    return ans
}

思路:参考python

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年08月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 566. 重塑矩阵
    • Python
      • GO
      • 118. 杨辉三角
        • Python
          • GO
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档