数据结构基础day3

news2024/10/5 15:28:51

题目:119. 杨辉三角II

我的解法:先将杨辉三角存储起来,取出第rowIndex行

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<vector<int>> ans(rowIndex+1);	//初始化rowIndex+1行的杨辉三角
        for(int i=0; i<rowIndex+1; ++i){
            ans[i].resize(i+1);	//每一行初始化i+1个元素
            ans[i][0] = ans[i][i] = 1;	//首末元素=1
            for(int j=1; j<i; ++j){	//其他元素为i-1行的第j-1个元素和第j个元素的和
                    ans[i][j] = ans[i-1][j] + ans[i-1][j-1];
            }
        }
        return ans[rowIndex];	//取出第rowIndex行
    }
};

其他解法:公式法

C n m = n ! m ! ( n − m ) ! C_n^m=\frac{n!}{m!(n-m)!} Cnm=m!(nm)!n!
C n m = C n m − 1 × n − m + 1 m C_n^m = C_n^{m-1}\times \frac{n-m+1}{m} Cnm=Cnm1×mnm+1

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<int> ans(rowIndex+1);
        ans[0]=1;
        for(int i=1; i<rowIndex+1; ++i){
            ans[i] = 1LL * ans[i-1] * (rowIndex - i + 1)/i;  //1LL是将32位运算转换为64位Long Long类型,防止溢出,必须写在最前面,这里n=rowIndex,m=i
        }
        return ans;
    }
};

题目:48. 旋转图像

解法1:找规律

在这里插入图片描述

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        for(int i=0; i<n/2; ++i){
            for(int j=i; j<n-i-1; ++j){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[n-j-1][i];
                matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
                matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
                matrix[j][n-i-1] = temp;
            }
        }
    }
};

解法2:先水平翻转,再对角线交换

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        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){	//注意这里j<i
                swap(matrix[i][j], matrix[j][i]);
            }
        }
    }
};

题目:59. 螺旋矩阵II

解法:设置left、right、top、bottom四条辅助线

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> ans(n, vector<int>(n));
        //设置四条辅助线
        int l=0, r=n-1, t=0, b=n-1, p=1;
        while(p<=n*n){
            for(int i=l; i<=r; ++i){	//同一top,左到右
                ans[t][i]=p; ++p;
            }
            ++t;
            for(int i=t; i<=b; ++i){	//同一right,上到下
                ans[i][r]=p; ++p;
            }
            --r;
            for(int i=r; i>=l; --i){	//同一bottom,右到左
                ans[b][i]=p; ++p;
            }
            --b;
            for(int i=b; i>=t; --i){	//同一left,下到上
                ans[i][l]=p; ++p;
            }
            ++l;
        }
        return ans;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/450458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贾其萃 : 笃行实践 筑梦扬帆 | 提升之路系列(二)

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

如何开发一款用户体验优秀的语音交友app?

在数字时代&#xff0c;人们越来越依赖智能手机上的应用程序来与他人进行交流。其中&#xff0c;语音交友app成为了最受欢迎的应用之一。然而&#xff0c;开发一款成功的语音交友app需要深入了解用户需求与体验。本文将探讨如何开发一款用户体验优秀的语音交友app。 着眼于用户…

微信小程序uniapp基于Android的大学生社交论坛交流app系统

实现一个基于Android的社交APP小程序,一共3个身份&#xff0c;包括老师、学生和管理员&#xff0c;其中老师和学生在手机端注册登录&#xff0c;管理员在web端后台登录。学生和老师登录后可以查询通知新闻信息&#xff0c;收藏信息&#xff0c;查看好友推荐&#xff0c;论坛发帖…

短视频app开发:如何实现实时短视频录制功能

简介 在当今的移动互联网时代&#xff0c;短视频app已经成为了人们生活中不可或缺的一部分。短视频app的数量和用户量都在不断增加。如今&#xff0c;越来越多的人开始关注短视频app的开发&#xff0c;尤其是如何实现实时短视频录制功能。本文将分享如何开发短视频app并实现实…

【TS】1660- 4 个 TypeScript 5.1 Beta 版重要更新内容

TypeScript 5.1 在 5.0 发布后不久就发布了测试版&#xff0c;但测试版不代表最终正式版。 官方原文 Announcing TypeScript 5.1 Beta(https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/) 中提供了完整的更新内容&#xff0c;以下是我梳理了 4 个 T…

总结829

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 暴力英语&#xff1a;背完第5轮核心词&#xff0c;那些没掌握的还是没掌握&#xff0c;必须重点揪出来&#xff0c;单独…

QT QPainter坐标系统和坐标变换

一、坐标变换函数 QPainter 在窗口上绘图的默认坐标系统如图下图所示&#xff0c;这是绘图设备的物理坐标。为了绘图的方便&#xff0c;QPainter 提供了一些坐标变换的功能&#xff0c;通过平移、旋转等坐标变换&#xff0c;得到一个逻辑坐标系统&#xff0c;使用逻辑坐标系统…

021:Mapbox GL加载arcgis地图(影像瓦片图)

第020个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载arcgis地图(影像瓦片图)。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共80行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置…

【数据库】MySQL的聚合查询,联合查询及关键字的执行顺序

目录 1.聚合查询 1.1聚合函数 1.2GROUP BY子句 1.3HAVING 2.联合查询 联合查询步骤 2.1内连接 2.2外连接 2.3自连接 2.4子查询 单行子查询 多行子查询 2.5合并查询 UNION UNION ALL 3.SQL关键字的使用顺序 3.1语法顺序 3.2执行顺序 1.聚合查询 聚合查询是SQ…

快速将PDF转换为图片:使用在线转换器的步骤

PDF文件是一种常见的文档格式&#xff0c;但在某些情况下需要将其转换为图片格式&#xff0c;例如将PDF文件插入PPT演示文稿中。此时&#xff0c;使用在线PDF转换器是一种快速且简便的方法。 本文将介绍如何使用在线转换器将PDF文件转换为图片格式。 步骤1&#xff1a;选择合…

Three.js+TypeScript+Webpack学习记录(三)

使用环境参考 Node.js v16.19.1 正文 独立功能文件 我们不可能一直在 index.ts 中写代码&#xff0c;分离文件&#xff1a; // init.ts import * as THREE from threeexport const initScene () > {const scene new THREE.Scene()scene.background new THREE.Color(wh…

【多线程】Java中是如何保证多线程间的数据共享的?

文章目录 前言一、Java的内存模型二、保证可见性的方式volatilesynchronizedlockfinal 三、volatile的底层实现总结 前言 在讨论这个问题之前&#xff0c;我们可以先瞅瞅Java的内存模型JMM&#xff0c;JMM可不要和JVM混为一谈。我们说的是内存模型JMM&#xff08;Java Memory …

JavaSE-06 [面向对象OOP + 封装]

JavaSE-06 [面向对象OOP 封装] 第一章 面向对象思想 1.1 面向过程和面向对象 面向过程&#xff1a; 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就可以了面向对象&#xff1a; 面向对象是…

博弈论(NIM游戏——取石子)相关的题目

1.异或的性质 &#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308; 2.nim游戏 &#xff08;基础&#xff09; 891. Nim游戏 - AcWin…

直播软件app开发:如何处理直播延迟问题?

随着直播技术的发展&#xff0c;直播软件app的开发变得越来越普遍。然而&#xff0c;直播延迟问题一直是直播软件app开发中的一个挑战。在本文中&#xff0c;我们将探讨如何解决直播延迟问题&#xff0c;提高用户体验。 直播延迟的原因 直播延迟的原因是多方面的。其中最主要…

【Mycat2】介绍、安装、部署、配置、测试与 Bugs

文章目录 一、MyCat 概览1.1 简介1.2 官网网址1.3 仓库地址1.4 Mycat1.x 与 Mycat2 功能对比1.5 下载1.5.1 先决条件1.5.2 Mycat2 安装包&#xff08;以下二选一&#xff09; 1.6 Mycat2权威指南1.7 原型库什么是兼容性 SQL&#xff1f;什么是 Prototype 服务器&#xff1f;原型…

shell第二次作业

一、编写脚本for1.sh使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入。 1、创建脚本for1.sh [rootlocalhost ~]# vim for1.sh2、编辑脚本内容 3.运行 [rootlocalhost ~]# bash for1.sh 请用户输入账户名的前缀&#xff1a…

WPS AI 再次引爆办公软件行业,以后写文档可由AI代笔

国内外办公软件两大巨头聚齐&#xff0c;使用AI助力再次成标配。 2023年3月16日&#xff0c;微软发布了 Microsoft 365 Copilot&#xff0c;Microsoft 365 这个名字听起来比较陌生&#xff0c;它集成了Office 365 企业版、Windows 10 企业版以及企业移动性安全性&#xff0c;以…

基于Jira的持续交付流水线实践方式

点击上方蓝字⭐️关注“DevOps云学堂”&#xff0c;接收最新技术实践 今天是「DevOps云学堂」与你共同进步的第 19 天 DevOps 为什么很重要&#xff1f; 软件和 Internet 改变了我们身处的世界&#xff0c;同时也改变了购物、娱乐、银行等行业的运营方式。软件不再仅仅是为业务…

【unity项目实战】3DRPG游戏开发03—— 绘制low poly风格的场景

搭建场景 拖入一颗树,按住V键,表示顶点吸附,点击树的底部,他就会自动吸附到相邻的平面上了 如果你的摄像机位置不是很好,我们可以场景移动到合适的位置,可以点击摄像机,按下键盘ctrl+shift+F同步调整摄像机位置 绘制low poly风格的环境 安装Ploybrush插件,并导入样…