C语言积累一点点

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

778. 水位上升的泳池中游泳
https://leetcode-cn.com/problems/swim-in-rising-water/

 

839. 相似字符串组
https://leetcode-cn.com/problems/similar-string-groups/

 

312. 戳气球
https://leetcode-cn.com/problems/burst-balloons/
说明:
你可以假设 nums[-1] = nums[n] = 1,但注意它们不是真实存在的所以并不能被戳破。
0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100

 1 /*区间dp是分治思想的一个应用
 2 大区间的解可以由小区间的解合并而成 故先将大区间分解成小区间 最后再将小区间的解合并得到大区间的解
 3 体现了分而治之再归并的分治法思想
 4 故区间dp所要做的就是:
 5 1.如何划分
 6 2.在何处划分
 7 在何处划分只需要枚举区间中的一个分割点即可 最关键的是确立“如何划分”这个问题
 8 既然区间dp用到了分治法的思想 则可以用分治法来思考问题
 9 分治法分解子问题的一个重要特点就是子问题彼此独立 互不干扰
10 所以在“如何划分”这个问题上也应该遵守划分的子区间之间彼此独立 互不干扰
11 现在有一区间[i,j]在区间中选取一点k 将区间拆分为[i,k-1],[k+1,j]
12 如果戳爆第k个气球 毫无疑问 两个区间将会产生交集 k-1与k+1将会直接相邻 子问题无法做到彼此独立 互不干扰
13 但现在换一种思路:
14 先分别求出区间[i,k-1]与区间[k+1,j]的解 再戳爆第k个气球 这样两个区间就不会产生交集 两个区间的求解过程彼此独立 互不干扰
15 每求完一段区间的解 该区间的气球数都会变成零
16 故当求解完两端区间的解时 只剩下了三个气球 i-1 k j+1 故此时再戳爆第k个气球
17 得到 nums[i-1]xnums[k]xnums[j+1]
18 故状态转移方程为dp[i][j]=max(dp[i][j],dp[i][k-1]+dp[k+1][j]+nums[i-1]xnums[k]xnums[j+1]);
19 注意边界条件 不要让数组越界*/

两数之和
https://leetcode-cn.com/problems/two-sum/solution/conlogner-fen-nei-er-fen-by-boille/

 

5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案
https://leetcode-cn.com/problems/longest-palindromic-substring/

 

 1024. / 

视频拼接 https://leetcode-cn.com/problems/video-stitching

1027. 最长等差数列
https://leetcode-cn.com/problems/longest-arithmetic-sequence/

300. 最长上升子序列

https://leetcode-cn.com/problems/longest-increasing-subsequence/

 

 10. 正则表达式匹配

 

 

 

547. 朋友圈

思路:总共有N个人, 每个人两两都不是朋友的话,最多有N个朋友圈,
定义一个N维的数组dp,表示N个朋友圈,值是1表示与其他人建立朋友圈,值是0表示不是朋友。
深度遍历搜索算法,如果(i,j)是朋友,那就遍历(j,k)是不是朋友,是朋友就把dp[k] = 1;
然后再遍历(k, ..)跟其他的人是不是朋友;
dp有几个0值,结果+1, 就为朋友圈的个数

 

 被包围的区域

 

 

 

 

 

 

posted @ 2020-04-03 08:59  繁星的夜空2012  阅读(242)  评论(0编辑  收藏  举报