训练营专题

代码训练营 Day26 | 47.排序II | 51. N-皇后 |

47.排序II 1.跟46题一样只不过加一个树层去重 class Solution(object):def backtracking(self,nums,path,result,used):# recursion stopif len(path) == len(nums):# collect our setresult.append(path[:])return for i in range(

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)

完全背包问题                  和01背包最大区别就是一个物品可以重复放多次,因此遍历空间时可以从前往后。 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt

【代码随想录训练营第42期 续Day52打卡 - 图论Part3 - 卡码网 103. 水流问题 104. 建造最大岛屿

目录 一、做题心得 二、题目与题解 题目一:卡码网 103. 水流问题 题目链接 题解:DFS 题目二:卡码网 104. 建造最大岛屿 题目链接 题解:DFS  三、小结 一、做题心得 也是成功补上昨天的打卡了。 这里继续图论章节,还是选择使用 DFS 来解决这类搜索问题(单纯因为我更熟悉 DFS 一点),今天补卡的是水流问题和岛屿问题。个人感觉这一章节题对于刚

代码随想录八股训练营第三十七天| C++

前言 一、map和unorder_map的区别? 1.1.内部实现: 1.2.排序: 1.3.查找效率: 1.4.内存使用: 1.5.迭代器: 1.6.键的唯一性: 1.7.使用场景: 二、C++11 新特性有哪些? 2.1.std::map: 总结 前言 在现代软件开发中,选择合适的数据结构如 C++ 标准库中的 std::map 和 std::unordered_

图论篇--代码随想录算法训练营第五十二天打卡| 101. 孤岛的总面积,102. 沉没孤岛,103. 水流问题,104.建造最大岛屿

101. 孤岛的总面积 题目链接:101. 孤岛的总面积 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。 现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。 解题思路: 从周边找到陆地,然后通过 dfs或者bfs 将

代码随想录八股训练营第三十六天| C++

前言 一、push_back()和emplace_back()的区别? 1.1.push_back(): 1.2.emplace_back(): 1.3.区别总结: 1.4.使用场景: 二、map dequeu list 的实现原理? 2.1.std::map: 2.2. std::deque: 2.3. std::list: 2.4. 区别总结: 总结 前言 在C+

代码随想录算法训练营第十九天| 回溯理论、77. 组合、216. 组合总和Ⅲ、17. 电话号码的字母组合

今日内容 回溯的理论基础leetcode. 77 组合leetcode. 216 组合总和Ⅲleetcode. 17 电话号码的字母组合 回溯理论基础 回溯法也叫回溯搜索法,它是一种搜索的方式,而且只要有递归就会有回溯,回溯就是递归的副产品。 回溯说到底并不是什么非常高深的搜索方式,本质上仍然是穷举,穷举所有可能然后选择出我们要的答案。剪枝会使回溯法更加高效一点,但改变不了回溯本质就是穷举

代码随想录算法训练营Day03 | 链表理论基础、203.移除链表元素 、707.设计链表、206.反转链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 链表理论基础203.移除链表元素思路与重点 707.设计链表思路与重点 206.反转链表思路与重点 链表理论基础 C/C++的定义链表节点方式: // 单链表struct ListNode {int val; // 节点上存储的元素ListNode *next; // 指向下一个节点的指

图论篇--代码随想录算法训练营第五十一天打卡| 99. 岛屿数量(深搜版),99. 岛屿数量(广搜版),100. 岛屿的最大面积

99. 岛屿数量(深搜版) 题目链接:99. 岛屿数量 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 解题思路: 1、每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 2、遇到一个没有遍历过的节点陆地,计数器就加一,然后把该节点陆地所能遍历到的陆地都

算法训练营——day4螺旋矩阵

1 螺旋矩阵II-力扣59(中等) 1.1 题目:螺旋矩阵II 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2: 输入:n = 1输出:[[1]] 提示: 1 <= n <= 20 1.

大模型微调训练营毕业总结

我目前在一家零售公司从事大数据架构方面的工作。 之所以选择参加AI大模型微调训练营,主要是考虑到当前无论是大数据这条技术赛道,还是个人职业发展都处在平台期,短期内看不到突破点。所以想看看在大模型这个技术领域有没有可能有所突破。大数据经过多年的发展,在理论和技术层面都已经到达了一个比较成熟的高度,用户使用也属于普惠期。不仅仅有支持度良好的商业化的产品,而且开源系统也能满足用户的基本使用。另外经过这

代码随想录算法训练营第五十天 | 98. 所有可达路径

目录 98. 所有可达路径 思路 图的存储 邻接矩阵          邻接表 深度优先搜索 1.确认递归函数,参数 2.确认终止条件 3.处理目前搜索节点出发的路径 方法一: 邻接矩阵写法 方法二:邻接表写法 98. 所有可达路径 题目链接:卡码网题目链接(ACM模式) 文章讲解:代码随想录  【题目描述】 给定一个有 n 个节点的有向无环图,节点编

图论篇--代码随想录算法训练营第五十天打卡| 深度优先搜索理论基础,98. 所有可达路径,广度优先搜索理论基础

深度优先搜索理论基础 DFS模板: void dfs(参数) {if (终止条件) {存放结果;return;}for (选择:本节点所连接的其他节点) {处理节点;dfs(图,选择的节点); // 递归回溯,撤销处理结果}} 98. 所有可达路径 题目链接:98. 所有可达路径 题目描述: 给定一个有 n 个节点的有向无环图,节点编号从 1 到 n。请编写一个函数,找出并返回所

【代码随想录训练营第42期 Day50打卡 - dfs入门 - 卡码网 98. 所有可达路径

目录 一、dfs基础 二、模板题 题目:98. 所有可达路径 题目链接 题解:dfs+邻接矩阵  三、小结 一、dfs基础 dfs是按照一个方向搜索到尽头再搜索其他方向。怎样实现对其他方向的搜索呢?我们可以通过回溯,撤销最后一步,再选择其他路线。 -- 回溯过程某种程度上也是递归的体现。所以,实现 dfs 的一个关键就是递归。 之前有了回溯的基础,其实可以发现回溯算法

代码随想录算法训练营第36天|1049. 最后一块石头的重量、494. 目标和、474.一和零

目录 1049. 最后一块石头的重量 II1、题目描述2、思路3、code4、复杂度分析 494. 目标和1、题目描述2、思路3、code4、复杂度分析 474. 一和零1、题目描述2、思路3、code4、复杂度分析 1049. 最后一块石头的重量 II 题目链接:link 1、题目描述 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块

代码随想录算法训练营第35天|背包问题基础、46. 携带研究材料(01背包二维解法)(01背包一维解法)(acm)、416. 分割等和子集

目录 0、背包问题基础01背包 46. 携带研究材料(01背包)1、题目描述2、思路3、code(二维解法)3-1、code(一维解法)4、复杂度分析 416. 分割等和子集1、题目描述2、思路3、code4、复杂度分析 0、背包问题基础 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能

代码随想录算法训练营第三十五天| 416. 分割等和子集

416. 分割等和子集 题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2: 输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等

代码随想录算法训练营第六十二天 | 图论part11

97. 小明逛公园 #include <iostream>#include <vector>#include <climits>#include <fstream>using namespace std;void floyd(vector<vector<vector<int>>>& grid) {int n = grid.size() - 1;for (int k = 1; k <= n;

代码随想录算法训练营第20天 | 第七章 回溯算法 part02

第七章 回溯算法 part02 39. 组合总和40. 组合总和 IIstartIndex去重bool used去重 131. 分割回文串 39. 组合总和 本题是集合里的元素可以重复使用无数次,与组合问题的差别主要在于 startIndex 的控制。 题目链接/文章讲解:组合总和视频讲解:点击观看 递归边界: 当 sum > target 时,直接返回,不再继续递归。

代码随想录算法训练营第四十五天 | 115.不同的子序列 ,583. 两个字符串的删除操作, 72. 编辑距离

目录 115.不同的子序列 思路 1.确定dp数组(dp table)以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数组 方法一: 动态规划 方法二:动态规划-一维数组 583. 两个字符串的删除操作 思路 动态规划一 1.确定dp数组(dp table)以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定

代码随想录八股训练营第三十一天| C++

前言 一、虚函数怎么实现的: 1.1.虚函数声明:: 1.2.虚函数表(vtable): 1.3.函数指针:: 1.4.动态绑定: 1.5.析构函数: 1.6.纯虚函数: 二、虚函数表是什么?? 2.1. 虚函数表的工作原理:: 2.2. 虚函数表的作用:: 2.3.虚函数表的实现细节: 总结 前言 在面向对象编程中,多态性是一个核心概念,它允许我们以统一的方式处理

算法训练营|图论第11天 Floyd算法 A*算法

题目:Floyd算法 题目链接: 97. 小明逛公园 (kamacoder.com) 代码: #include<bits/stdc++.h>using namespace std;struct Edge {int to;int val;Edge(int t, int w) :to(t), val(w) {}};int main() {int n, m;cin >> n >> m;i

代码随想录算法训练营第三十四天| 62.不同路径 63. 不同路径 II

62.不同路径 题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 示例 1: 输入:m = 3, n = 7输出:28 示例 2: 输入:m = 3, n = 2输出:3解释:从左上

算法训练营|图论第10天 Bellman_ford:优化算法,判断负权算法,单源有限最短路

题目:Bellman_ford:优化算法 题目链接: 94. 城市间货物运输 I (kamacoder.com) 代码: #include<bits/stdc++.h>using namespace std;struct Edge {int to;int val;Edge(int t, int w) :to(t), val(w) {}};int main() {int n, m;c

算法训练营|图论第8天 拓扑排序 dijkstra

题目: 拓扑排序 题目链接: 117. 软件构建 (kamacoder.com) 代码: #include<bits/stdc++.h>#include<unordered_map>using namespace std;int main() {int n, m;cin >> n >> m;vector<int>inDegree(n, 0);unordered_map<int, v