LeetCode刷题笔记-数据结构-day3

Posted LL.LEBRON

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题笔记-数据结构-day3相关的知识,希望对你有一定的参考价值。

文章目录

LeetCode刷题笔记-数据结构-day3

119.杨辉三角 II

1.题目描述

原题链接:119. 杨辉三角 II

2.解题思路

算法:递推即可

  • 使用两个vector数组vresres表示上层的数组状态。v表示该层的状态,最后答案就是res

  • 一行一行计算,由于每行的值仅与上一行的值有关,所以可以用滚动数组优化。计算每一行的值时,先将1放在首末两个位置,然后计算中间的数:

    v[j]=res[j-1]+res[j];

3.代码

class Solution 
public:
    vector<int> getRow(int n) 
        vector<int> v(n+1),res(n+1);
        res[0]=1;
        for(int i=1;i<=n;i++)
            for(int j=0;j<i+1;j++)
                if(!j||j==i) v[j]=1;
                else v[j]=res[j-1]+res[j];
            
            res=v;
        
        return res;
    
;

48.旋转图像

1.题目描述

原题链接:48. 旋转图像

2.解题思路

我们细心观察可以看出:

顺时针旋转90°的操作可以分为两步:

  1. 主对角线(从左上到右下)翻转
  2. 再以中心的竖线为轴做翻转

总结一下其他的旋转:

  • 逆时针 90:主对角线翻转,然后从中间上下翻转
  • 顺时针180和逆时针180:都是先主对角线翻转,然后副对角线翻转。也可以直接先上下旋转后左右旋转。

3.代码

class Solution 
public:
    void rotate(vector<vector<int>>& a) 
        int n=a.size();
        //主对角线交换
        for(int i=0;i<n;i++)
            for(int j=0;j<i;j++)
                swap(a[i][j],a[j][i]);
            
        

        //对称交换
        for(int i=0;i<n;i++)
            for(int j=0;j<n/2;j++)
                swap(a[i][j],a[i][n-j-1]);
            
        
    
;

59.螺旋矩阵 II

1.题目描述

原题链接:59. 螺旋矩阵 II

2.解题思路

算法:使用循环遍历即可

循环遍历方向为右→下→左→上。所以这里的遍历方向的数组要一致。我们顺时针定义四个方向:右下左上。

int dx[4]=0,1,0,-1,dy[4]=1,0,-1,0;

从左上角开始遍历,先往右走,走到不能走为止,然后更改到下个方向,再走到不能走为止,依次类推,遍历 n*n 个格子后停止。

不能走的条件(假设a、b分别为横纵坐标):

a<0||a>=n||b<0||b>=n||res[a][b]!=0

3.代码

class Solution 
public:
    vector<vector<int>> generateMatrix(int n) 
        vector<vector<int>> res(n,vector<int>(n,0));
        int dx[4]=0,1,0,-1,dy[4]=1,0,-1,0;
        int d=0;
        int a=0,b=0;
        for(int i=1;i<=n*n;i++)
            res[a][b]=i;
            a+=dx[d],b+=dy[d];
            if(a<0||a>=n||b<0||b>=n||res[a][b]!=0)
                a-=dx[d],b-=dy[d];
                d=(d+1)%4;
                a+=dx[d],b+=dy[d];
             
        
        return res;
    
;

以上是关于LeetCode刷题笔记-数据结构-day3的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题笔记-动态规划-day3

LeetCode刷题笔记-动态规划-day3

LeetCode刷题笔记-动态规划-day3

LeetCode刷题合集

leetcode刷题day3

leetcode刷题day3