
c++
Baymax的学习日志
这个作者很懒,什么都没留下…
展开
-
快速学会C++11中的lambda函数的使用
c++11中引入Lambda表达式,便于定义和创建匿名函数。 完整表达式: [capture list] (parameters) mutable ->returntype {function body} 参数含义: 1、capture list:捕获到的外部变量列表(函数体可直接使用的外部变量) 2、parameter:形参列表、类似于函数中的形参 3、mutable:若有,则可修改值捕获的外部变量 4、returntype:返回类型 lamdba表达式为匿名原创 2021-05-14 16:19:02 · 257 阅读 · 0 评论 -
并查集-----leetcode547
并查集可用来划分圈子,比如10个人,认识的人为一个圈子,一个可划分为几个圈子。思路:1、先将10个人均划分为10个圈子。2、合并,将认识的人划分在一个圈子 ,在合并时,需找到一个人的根节点 ,再将新人连接到该根节点上,形成一个圈子(相当于将认识的人放到一棵树里)。 举个简单例子 输入: [[1,1,0] [1,1,0] [0,0,1]] 输出:2 本身和本身肯定是朋友,且A与B是朋友。C无朋友,因此,只有C与C本身为朋友。 并查集正好是用来划分圈子,故本题采用并查集的思路。注意:并查集要进行合并原创 2021-05-13 18:35:06 · 302 阅读 · 0 评论 -
背包总结——0-1背包及完全背包问题总结及代码模板
背包总结 背包问题通常是多种物品有多个属性,且已知条件为某属性被受限,求另一属性的最大/最小/等于/存在不存在。以0-1背包为例解释:n个物品具有的属性为重量和价值,其中总重量C将重量的属性限制住,求最大价值,即求另一属性的特征。 针对背包问题: 1、先判断属于0-1背包还是完全背包。 2、看是求最大值/最小值/等值/是否存在/排列/组合(排列/组合问题通常出现在完全背包中)。 确定了背包类型及要求的问题后,即可下手做题。 1、0-1背包 0-1背包是指物品只能使用一次,故通常其状态方程为: dp[i][j原创 2020-08-18 22:01:00 · 527 阅读 · 0 评论 -
0-1背包问题——从暴力到一维vector的优化
0-1背包问题 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eff1JDMW-1597756821006)(C:\Users\a\AppData\Roaming\Typora\typora-user-images\image-20200812092906165.png)] 分析:同样,若没有思路可以考虑暴力循环的方法,即先找到多少种情况(2n),再每一种情况是否符合要求并求价值,求取最大值,O((2n)*n)。 若进一步考虑,可定义表达式:F(n,c),意思为将n个物品装入原创 2020-08-18 21:18:56 · 292 阅读 · 0 评论 -
和为奇数的子数组数目
1524. 和为奇数的子数组数目 题干:给你一个整数数组 arr 。请你返回和为 奇数 的子数组数目。由于答案可能会很大,请你将结果对 10^9 + 7 取余后返回。 输入:arr = [1,3,5] 输出:4 解释:所有的子数组为 [[1],[1,3],[1,3,5],[3],[3,5],[5]] 。 所有子数组的和为 [1,4,9,3,8,5]. 奇数和包括 [1,9,3,5] ,所以答案为 4 。 分析:首先想到的是动态规划,即第i个数所包含的和为奇数的子数组数目。最重要的是找到状态方程: 假设dp[原创 2020-08-01 21:03:30 · 1037 阅读 · 0 评论 -
快速幂解 剑指 Offer 16. 数值的整数次方
剑指 Offer 16. 数值的整数次方 题干:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 分析:首先想到的是使用递归进行计算。但是,指数幂容易产生指数爆炸,需要一种方法避免指数爆炸。本题中采用的是快速幂算法。详细讲解可见,非常易懂https://blog.youkuaiyun.com/qq_19782019/article/details/85621386 可一步一步分析:产生指数爆炸的主要问题在于原创 2020-07-22 16:44:34 · 128 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树+递归+图解+易于理解
剑指 Offer 07. 重建二叉树 题干:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 分析: class Solution { public: // 3、递归 TreeNode *helper(vector<int>& preorder, int pre_start,原创 2020-07-20 20:24:44 · 229 阅读 · 0 评论