cpp 刷题
your pencil
记下你的路
展开
-
cpp刷题常用函数
for 循环里有2个变量的时候for (int i = start, j = end; i < j; i++, j--) { swap(s[i], s[j]);}max 函数max(int a,int b)// 只能放2个数,不能用于向量调换 a,b 的值swap(a,b)int a=1,b=2;swap(a,b);cout<<a;对字符串进行翻转reverse(s.begin(), s.begin() + n);bool(0)–>faslenums原创 2021-07-31 13:02:44 · 335 阅读 · 0 评论 -
编辑距离 动态规划
编辑距离给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符解法一 动态规划【初始】初始时,当其中一个 word 是空时,其操作数等于另一 word 的长度【状态转移】dp[i][j]表示单词 word1前 i 个字母和 word2前 j个字母时需要的操作数,即相当于以下情况的最少操作数dp[i][j-1]+1:增加字母 word2中第 j 个字母dp[i-1]原创 2021-06-25 12:09:57 · 143 阅读 · 0 评论 -
cpp刷题常用数据结构
数组 vector初始化vector<int> nums={1,2,3};vector<int> nums={};vector<int> nums(n,m); // 长度是 n,默认值是 m,如果不给默认值,则默认值是0vector<vector<int>> dp(n,vector<int>(m,0)); 一个 n 行 m 列二维数组,默认值是0曾删改查,遍历,大小,是否为空nums.insert(nums.begin(原创 2021-06-25 11:36:29 · 485 阅读 · 0 评论 -
最长递增子序列
最长递增子序列输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。解法一:动态规划 O(n^2)设 dp[i]是使用 nums[i]的最长子序列长度。则dp[i]={max(dp[j]+1)nums[i]>nums[j],0<=j<idp[i]elsedp[i]=\begin{cases}max(dp[j]+1)& \text{nums[i]>nums[j],0<=j&l原创 2021-06-25 11:03:13 · 237 阅读 · 0 评论