栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++刷题之旅(31)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++刷题之旅(31)

LeetCode算法入门(第三十一天) 数组 119.杨辉三角Ⅱ

class Solution {
public:
    vector getRow(int rowIndex) {
       vector vec;
       vec.push_back(1);   //将第一个1压入
       for(int i = 1; i <= rowIndex; i++){
           vec.push_back(1);  //将下一行扩充填入1
           for(int j = i - 1; j > 0; j--){   //j从最右边i的前一位开始递减遍历,终止条件是大于左边界0
               vec[j] = vec[j] + vec[j-1];
           }
       }
       return vec;
    }
};
48.旋转图像

class Solution {
public:
    void rotate(vector>& matrix) {
        
        //暴力
        int n = matrix.size();    
        auto newmatrix = matrix;
        for(int i = 0; i < n; i++){
            for(int j = 0; j < n; j++){
              // matrix[j][n - i -1] = matrix[i][j];    //直接原矩阵上操作,会导致下一步操作的是已经变换后的矩阵
              newmatrix[j][n-i-1] = matrix[i][j];
            }
        }
        matrix = newmatrix;


        //不使用另一个矩阵,
        int n = matrix.size();
        //水平翻转
        for(int i = 0; i < n /2; ++i){
            for(int j = 0; j < n; ++j){
                swap(matrix[i][j], matrix[n-i-1][j]);
            }
        }
        //沿对角线翻转
        for(int i = 0; i < n; ++i){
            for(int j = 0; j < i; ++j){
                swap(matrix[i][j], matrix[j][i]);
            }
        }
    }
};

59.螺旋矩阵Ⅱ

class Solution {
public:
    vector> generateMatrix(int n) {
      
        vector> matrix(n ,vector(n));
          int count = 1;
        int top = 0, left = 0;  //外层边界初始值
        int right = n - 1, bottom = n-1;
        
        while(left <= right && top <= bottom){
        	//从左向右填入
            for(int i = left; i <= right; i++){
                matrix[top][i] = count;
                count++;
            }
           //从上到下 
            for(int j = top+1; j <= bottom; j++){
                matrix[j][right] = count;
                count++;
            }
            if(left < right && top < bottom){
            	//从右到左
                for(int j = right-1; j > left; j--){
                    matrix[bottom][j] = count;
                    count++;
                }
                //从下到上
                for(int i = bottom; i > top; i--){
                    matrix[i][left] = count;
                    count++;
                }
            }
            left++;
            right--;
            top++;
            bottom--;
        }
        return matrix;  
    }
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号