力扣每日一练之二维数组上篇Day4

举报
京与旧铺 发表于 2022/05/27 19:46:04 2022/05/27
【摘要】 力扣每日一练之二维数组上篇Day4🍕前面的话🥞大家好!本篇文章将介绍2周搞定数据结构的题,来自力扣的566.重塑矩阵和118.杨辉三角,本文将以这两道题作为背景,介绍经典的杨辉三角以及矩阵模拟,展示语言为java(博主学习语言为java)。今天呢,是博主开始刷力扣的第四天,如果有想要开始准备自己的算法面试的同学,可以跟着我的脚步一起,共同进步。大家都是并肩作战的伙伴,一起努力奋力前行,路...

力扣每日一练之二维数组上篇Day4

🍕前面的话🥞

大家好!本篇文章将介绍2周搞定数据结构的题,来自力扣的566.重塑矩阵和118.杨辉三角,本文将以这两道题作为背景,介绍经典的杨辉三角以及矩阵模拟,展示语言为java(博主学习语言为java)。今天呢,是博主开始刷力扣的第四天,如果有想要开始准备自己的算法面试的同学,可以跟着我的脚步一起,共同进步。大家都是并肩作战的伙伴,一起努力奋力前行,路漫漫其修远兮,吾将上下而求索,相信我们一定都可以拿到自己期望的offer,冲冲冲!

👩‍💻博客主页:京与旧铺的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

🔮本文由京与旧铺原创,csdn首发!

😘系列专栏:java学习

💻首发时间:🎞2022年5月2日🎠

🎨你做三四月的事,八九月就会有答案,一起加油吧

🔏参考在线编程网站:🎧力扣

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲

🏓导航小助手📻


图片


🎒LeetCode 566.重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。

给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。

重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。

如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。


 > 示例 1:
 >
 > 输入:mat = [[1,2],[3,4]], r = 1, c = 4
 > 输出:[[1,2,3,4]]
 > 示例 2:
 >
 >
 > 输入:mat = [[1,2],[3,4]], r = 2, c = 4
 > 输出:[[1,2],[3,4]]
 ​
 ​
 class Solution {
     public int[][] matrixReshape(int[][] mat, int r, int c) {
         if(mat.length*mat[0].length!=r*c){
             return mat;
         }
         int[][] res=new int[r][c];
         int row=0;
         int col=0;
         for(int i=0;i<mat.length;i++){
             for(int j=0;j<mat[i].length;j++){
                 if(col>=c){
                     row++;
                     col=0;
                 }
                 res[row][col]=mat[i][j];
                 col++;
             }
         }
         return res;
     }
 }

👗解题思路

原矩阵元素数量与重塑矩阵元素数量不等时直接输出原始矩阵。

给重塑矩阵一行一行加元素,每行元素数量达到 cc 时,行 +1+1。

🧢Leetcode 118 :杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

img


 示例 1:
 ​
 输入: numRows = 5
 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
 示例 2:
 ​
 输入: numRows = 1
 输出: [[1]]
 ​
 ​

🎾解题思路

根据杨辉三角特性,每行除了第一个和最后一个元素是1,其他元素是上一行当前列元素与上一行当前列的前一列元素的和

 class Solution {
     public List<List<Integer>> generate(int numRows) {
         List<List<Integer>> ans=new ArrayList<>();
         List<Integer> nums=new ArrayList<>();
         nums.add(1);
         ans.add(nums);
         if(numRows==1){
             return ans;
         }
         for(int i=1;i<numRows;i++){
             List<Integer> list=new ArrayList<>();
             list.add(1);
             for(int j=1;j<i;j++){
                 int tar=ans.get(i-1).get(j-1)+ans.get(i-1).get(j);
                 list.add(tar);
             }
             list.add(1);
             ans.add(list);
         }
         return ans;
     }
 }

🌌总结

通过这两道题,我们学习了杨辉三角的特性和矩阵模拟,复习了数组和循环的知识,那么呢,期待一下下一篇文章吧,和我一起进步,每天努力多一些,迈出更大的一步


觉得文章写的不错的亲亲,点赞评论关注走一波,爱你们哦🛴

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。