vector 练习

news/2024/11/28 14:13:41/

目录

一、创建动态二维数组的方法

        0x01 C语言法

        0x02  C++法

二、 杨辉三角

三、电话号码的数字组合


一、创建动态二维数组的方法

        0x01 C语言法

int** p = (int**)malloc(sizeof(int*) * M);//创建M行的数组,每一行都是一个数组
for(size_t i = 0;i < M;i++)
{p[i] = (int*)malloc(sizeof(int) * N);//每一行有N列
}

        0x02  C++法

vector<vector<int>> arr;
//解析:vector相当于一个数组,里面再放个vector<int>,相当于如每一格里面还有一个数组,图可用上图参考

二、 杨辉三角

力扣icon-default.png?t=N4P3https://leetcode.cn/problems/pascals-triangle/submissions/ 思路:使用二维数组,进行开空间和初始化,然后通过规律可知,每个为0的空,等于上一行与本行当前下标相同的那一个加上前一个

class Solution {
public:vector<vector<int>> generate(int numRows) {//创建一个二维数组vector<vector<int>> arr;//创建行数arr.resize(numRows);//进行初始化给值,并且每行里面多少个数for(size_t i = 0;i < numRows;i++){//先给每行里面的数组进行开空间arr[i].resize(i+1);//第一个数和最后一个数初始化为1arr[i].front() = arr[i].back() = 1;}//其余的每一个初始化为0的空,都等于上一行的当前下标的数+前一个数for(size_t i = 0;i < numRows;i++){for(size_t j = 0;j < arr[i].size();j++){if(arr[i][j] == 0){arr[i][j] = arr[i-1][j] + arr[i-1][j-1];}}}return arr;}
};

辅助理解图:

三、电话号码的数字组合

力扣icon-default.png?t=N4P3https://leetcode.cn/problems/letter-combinations-of-a-phone-number/ 思路:首先初始化数组,然后可以通过下图的递归展开图来理解

class Solution 
{string arr[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:void _letterCombinations(const string& digits,size_t i,string combine_str,vector<string>& vs){if(i == digits.size()){vs.push_back(combine_str);return;}string str = arr[digits[i] - '0'];//deffor(size_t j = 0;j < str.size();j++){_letterCombinations(digits,i+1,combine_str+str[j],vs);}}vector<string> letterCombinations(string digits) {//组合后的字符串string combine_str;//最终的字符串数组vector<string> vs;if(digits.empty()){return vs;}//进行组合_letterCombinations(digits,0,combine_str,vs);//"369" , 3 6 9是i=0 1 2return vs;}
};

辅助理解递归图:

 本文为学习时的一些练习,如有问题还请各位大佬多多指导。


http://www.ppmy.cn/news/249782.html

相关文章

关于工业线阵相机的一些知识

线阵相机案例说明 1.计算分辩率:幅宽除以最小检测精度得出每行需要的像素 2.选定相机:幅宽除以像素数得出实际检测精度。 3.每秒运动速度长度除以精度得出每秒扫描行数。 例如如幅宽为1600毫米、精度1毫米、运动速22000mm/s 相机&#xff1a;1600/1&#xff1d;1600像素 最少…

在普通显示器上观看 左右3d模式的视频

mplayer xxxxx.mkv -vf crop960:1080:0:0 -monitoraspect 0.75 crop是裁剪&#xff0c;960:1080:0:0&#xff0c;表示裁剪视频的左半边&#xff0c;原始视频大小是1920:1080&#xff0c;一半就是960:1080 monitoraspect是全屏后缩放比例 如果不全屏&#xff0c;则用下面命令 …

3D旋转导航

具体效果如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>ul {margin: 0;padding: 0;list-style: none;}.navs {width: 300px;height: 40px;margi…

计算机图形学:3D坐标系及左右手坐标的转换

在数学中&#xff0c;坐标系的Z在上面&#xff0c;而在计算机中由于计算机屏幕是一个平面&#xff0c;所以在屏幕上面2D图形向上为y轴&#xff0c;向右为x轴 3D图形中&#xff0c;Z轴向屏幕里面的或者向屏幕外面&#xff08;在图像渲染中&#xff0c;实际上是一种渲染深度&…

网上下载的“上下3D”和“左右3D”影片该如何播放?

我们平常买的红蓝3D眼镜智能播放红蓝3D片源。网上找3D电影的时候&#xff0c;虽试图去找红蓝3D格式电影&#xff0c;但总会找到不少“左右格式”或者"上下格式"影片。正常播放后发现有两重画面。这种3D电影该如何播放呢? 别急。我这就来教大家播放左右/上下3D电影。…

SVG黑科技排版上下左右视差滚动与3D立体呈现

模板效果 模板代码 <!DOCTYPE html> <html> <head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover" />…

3D眼镜

自从电影《阿凡达》之后&#xff0c;3D眼镜迅速的在中国的市场流行起来&#xff0c;3D电影、3D游戏&#xff0c;甚至一些网站的首页也都是3D效果的。在淘宝网平台上&#xff0c;各类3D眼镜从一元到上万元都有&#xff0c;并且3D眼镜的立体观看方法差异很大&#xff0c;各个种类…

Unity 3D 控制物体上下左右均匀移动脚本

//向上运动——Wif(Input.GetKey(KeyCode.W)){print("w");transform.Translate(Vector3.up * Time.deltaTime * 1);}//向下运动——Sif(Input.GetKey(KeyCode.S)){print("s");transform.Translate(Vector3.down * Time.deltaTime * 1);}//向左运动——Aif(…