LeetCode15:三数之和
题目描述: 重点:与两数之和不同,两数之和只用返回一个下标组合,三数之和是返回所有元素组合,且不重复 方法1:使用双指针,对数组排序后,i 从0遍历到 n-3,左指针是 i+1,右指针是 n-1,然后记得去重 如果nums[i]大于0,返回结果 如果nums[i] + nums[left]大于0,遍
题目描述: 重点:与两数之和不同,两数之和只用返回一个下标组合,三数之和是返回所有元素组合,且不重复 方法1:使用双指针,对数组排序后,i 从0遍历到 n-3,左指针是 i+1,右指针是 n-1,然后记得去重 如果nums[i]大于0,返回结果 如果nums[i] + nums[left]大于0,遍
是一种基于策略梯度的强化学习方法 是TRPO的一个改进的版本,都引入了对策略更新幅度(保证了策略的稳定单调提升),只不过TRPO采用的是硬约束的形式,得使用二阶优化方法(比如共轭梯度),效率低,PPO将硬约束变成了软约束 为了实现对策略更新幅度的软约束,ppo通常在目标函数里面剪切新旧策略的比率,或
1:在RLHF中,PPO、DPO、GRPO有什么区别,loss是什么样的、各自的优缺点是啥 共同点:三者都属于策略优化的方法 PPO(近端策略优化):是一种在线强化学习的方法(但是因为限定了更新的幅度,所以可以利用部分之前的数据),构建奖励模型,依赖Critic模型
题目描述: 方法1:贪心算法,将胃口和饼干从小到大排序,然后从最大的胃口值开始,不断迭代用最大的饼干去满足 class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s) { s
题目描述: 方法1:层次遍历,得到每一层的数组后,再遍历数组填充指针 class Solution { public: Node* connect(Node* root) { queue<Node*>que; if(!root) return root;
题目描述: 方法1:层次遍历,但是只把每一层的最大值存入 result 数组,非递归 class Solution { public: vector<int> largestValues(TreeNode* root) { vector<int> result;
1:为什么使用多头注意力,为啥不使用一个头 表达能力:多头注意力可以更好的捕捉序列中的不同信息,不同的头可以分别去关注序列中的不同内容 计算效率:如果使用一个注意力头,要达到一个比较好的效果,需要一个维度比较大的矩阵,计算复杂度高,多头注意力虽然有多个矩阵,但是是可以并行计算的,效率比较高
题目描述: 方法1:普通的层次遍历,然后反转下结果 class Solution { public: void order(vector<vector<int>>& result, TreeNode* root, int length){ if(!root) return;
题目描述: 方法1:递归 class Solution { public: void order(vector<int>& result,Node* root){ if(!root) return; result.push_back(root->val);
题目描述: 方法1:前序遍历,只不过把读取数字改为交换左右孩子(递归) class Solution { public: void reverse(TreeNode* root){ if(!root) return; swap(root->left,root-