力扣重刷篇--2
我的力扣: 迷路的小朋友 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 12输入:[1,8,6,2,5,4,8,3,7]输出:49 解题思路 双指针法,从两端开始向中间遍历,每次移动高度较小的指针,直到两个指针相遇。 代码 1234567891011121314151617181920class Solution {public: int maxArea(vector<int>& height) { int ans=0,n=height.size(); for(int i=0;i<n;i++){ if(height[i]<height[n-1]){ ...
力扣重刷篇--1
我的力扣: 迷路的小朋友 力扣重刷篇–1 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 123输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 解题思路 暴力法(O(n^2)):直接两轮for循环遍历数组,找到符合条件的两个数。 哈希表(O(n)):利用哈希表存储数组元素和索引的映射关系,通过一次遍历数组,判断target - nums[i] 是否在哈希表中,如果存在则返回对应的索引。 代码 暴力法: 123456789101112131415class Solution { public int[] twoSum(int[] nums, int target) { int[]...
图--DFS与BFS
图的存储 直接存边(邻接表) 12345678int n,k;cin>>n>>k; // n为顶点数,k为边数vector<vector<int>> graph(n+1, vector<int>()); // n为顶点数for(int i = 0; i < k; i++) { int a, b; cin >> a >> b; graph[a].push_back(b);} 这种方法的优点是简单,但难以判断两个顶点之间是否有边相连。 邻接矩阵 12345678int n, k;cin >> n >> k; // n为顶点数,k为边数vector<vector<int>> graph(n+1, vector<int>(n+1, 0)); // n为顶点数for(int i = 0; i < k; i++) { int a, b; cin >> a...
回溯算法
回溯算法介绍与基本使用 1. 什么是回溯算法? 回溯算法(Backtracking)是一种通过试错来寻找问题解决方案的算法思想。它通过逐步构建候选解,并在确定当前路径无法得到有效解时,回溯到上一步尝试其他可能的路径。回溯算法常用于解决组合优化、排列组合、子集生成等需要遍历所有可能性的问题。 2. 回溯算法的基本思想 试错思想:通过递归或迭代逐步构建候选解 剪枝操作:当发现当前路径不可能得到解时,提前终止该路径 状态管理:在递归过程中维护和恢复状态(通过栈或参数传递) 3. 适用场景 ✅ 组合问题:从n个元素中选k个的所有组合 ✅ 排列问题:全排列、N皇后问题 ✅ 子集问题:求集合的所有子集 ✅ 分割问题:字符串分割为回文子串 ✅ 棋盘问题:数独、单词搜索 4. 算法基本结构 12345678910def backtrack(路径, 选择列表): if 满足结束条件: 结果集.append(路径) return for 选择 in 选择列表: if 不满足剪枝条件: 做选择(加入路径) ...
线段树的概念与算法
前言 线段树是一种二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。线段树具有以下性质: 线段树的每个结点代表一个区间; 线段树的每个叶结点代表一个长度为1的区间; 线段树的每个非叶结点代表一个长度大于1的区间; 线段树的每个非叶结点的左子树代表一个左半区间,右子树代表一个右半区间; 拥有这种性质的搜索树,时间复杂度是O(logn),所以线段树是一种高效的数据结构。 这里,我们用数组来表示线段树,其中数组下标代表结点编号,结点下标为i的结点,其左子结点下标为2i+1,右子结点下标为2i+2。 本文子问题是记录区间最小值,所以线段树结点中存储的是区间最小值。 线段树的构建 线段树的构建过程如下: 确定线段树的深度,即log2(n)向上取整; 创建线段树,每个结点包含一个区间和两个子结点; 代码 12345678910void build(vector<int> &arr, int start, int end, int id) { if(start == end) { ...
pygame小游戏---小恐龙跳跃
前言 学习pygame的第一个小游戏,挺适合做经典谷歌小恐龙跳跃 仓库地址:github 代码部分 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178import pygame #...
排序算法
排序算法 基础排序算法 冒泡排序 123456789101112131415161718192021222324class MAOPAOSORT {public: void sort(vector<int>& nums) { if(nums.empty()) { return; } maopaosort(nums); }private: void swap(int& a, int& b) { int temp = a; a = b; b = temp; } void maopaosort(vector<int>& nums) { for (int i = 0; i < nums.size(); i++) { for (int j = 0; j <...
hexo一键部署脚本与优化
hexo一键部署脚本与优化 前言 接前hexo初步搭建,本文将介绍如何使用一键部署脚本,并对其进行博客优化。 butterfly主题优化 主题优化 1,下载butterfly主题 1git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly 2,修改主题配置文件 在博客主文件夹创建_config.butterfly.yml文件,并修改主题配置文件_config.yml,将主题修改为butterfly。 1234# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme:...
链表的二分查找--跳表
前言:链表的二分查找 链表与数组相比,最大的优势在于插入和删除操作的时间复杂度是O(1),但是查找操作的时间复杂度是O(n)。如果需要频繁进行查找操作,那么链表的时间复杂度就会很高。为了解决这个问题,我们可以使用二分查找的思想来优化链表的查找操作。 这里介绍一种基于链表和二分查找思想的跳表(Skip List)数据结构。跳表是一种随机化的数据结构,它通过在链表上建立多级索引来加速查找操作。跳表的时间复杂度是O(logn),与平衡树的时间复杂度相当,但是实现起来更简单。 跳表的基本概念 跳表是一种随机化的数据结构,它通过在链表上建立多级索引来加速查找操作。跳表的基本思想是将链表分成多个层次,每一层都是一个有序的链表。在最高层,链表中的元素是全局有序的,而在低层,链表中的元素是有序的,但是排序的范围更小。通过这种方式,我们可以快速定位到目标元素所在的区间,从而加速查找操作。 跳表的实现 1,skipnode节点 12345struct SkipNode { int val; struct SkipNode *next; struct SkipNode...
hexo初步部署日记
hexo初步部署日记 前言: hexo是一款基于node.js的静态博客框架,可以快速生成静态网页托管在github上(最重要的是不用花钱)。 github官网 1. 安装node.js 下载地址 2. 安装git 下载地址 3. 安装hexo 这里需要管理员权限,在终端打开管理员cmd或者win+x打开管理员powershell 1npm install -g hexo-cli 如果出现报错,输入下面代码(注意这是powershell时用,不是cmd) 1Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned 4. 检查是否成功安装 12345node -vnpm -vhexo -v 出现版本号即成功安装 5. 配置用户名和链接到你的邮箱 123git config --global user.name "yourname"git config --global user.email "youremail" 6. 创建ssh密钥 1ssh-keygen -t...













