hexo部署到Gitee后显示404||没有更新
在Gitee开启了Gitee Pages,并且本地完成了
hexo cleanhexo g -d
然后发现已经上传到了Gitee仓库里,但是访问博客的网址却显示404
有以下两种可能的原因:
hexo根目录下的_config.yml文件里,url没有配置对
如果仓库名和Gitee的用户名不一致时,root属性也需要修改。
比如用户名为xxx新建的仓库地址为
https://gitee.com/xxx/myblog
则以上内容需要修改为
url: https://xxx.gitee.io/root: /myblog
没有手动再部署一遍!!!是的你没有听错,这个居然上传成功后还需要手动再更新一下!
WSL命令行操作笔记
记录一下这段时间在WSL2上学习conda以及ubuntu的命令行指令,以便以后直接粘贴复制
1.wsl相关创建用户usernameuseradd username
给已创建的用户username设置密码passwd username
修改用户这个命令的相关参数usermod --help
删除用户usernameuserdel username
删除用户username所在目录rm -rf username
用户切换切换到rootsudo -s
切换到用户usernamesu usernameeg:su ubuntu22
首先查看所有分发版本wsl -l --all -v
关闭WSL2wsl --shutdown
2.Conda相关切换环境conda activate cu118py310
conda activate tensorflow
conda activate NER
conda activate torch
查看并删除环境查看环境列表conda info --env
删除环境conda remove -n 环境名 --alleg:conda remove -n cod ...
王道数据结构 线性表 链式存储小结
1.单链表
头插法图解:
待插入的next指向头结点原本指向的结点
修改头结点的next指向待插入结点
插入完毕代码实现
//设带插入结点为SS->next=head->next;head->next=S;
尾插法图解
将待插入结点的next域设为NULL
将最后一个结点的next域指向带插入结点
插入完毕代码实现
//设插入结点为Shead->next=S;head=S;
在中间插入图解
将待插入结点的next域指向插入结点位置的前驱结点指向的后一个结点
将原本位置上之前的结点指向待插入结点
插入完成
代码实现
//设待插入结点为S//待插入位置的前驱结点为preS->next=pre->next;pre->next=S;
在中间删除图解
将待删除结点的前一个结点的next指向待删除结点next的结点
删除待删除结点
删除完成
代码实现
//设待删除前驱结点为pre//待删除结点为Spre->next=S->next;delete S;
原地逆置链表
将头结点与后面的结点断开,然后重新用头插法插入
使用三个指 ...
斐波那契数列 C_C++
用三种方法实现:
带备忘录的递归
dp迭代
迭代优化,空间复杂度为O(1)
#include <cstdio>#include <iostream>#include <vector>using namespace std;#define _for(i,a,b) for(int i=(a);i<=(b);i++)//备忘录int helper(vector<int>& memo, int n) { //base case if (n == 2 || n == 3) { return 1; } if (memo[n] != 0) { return memo[n]; } else { memo[n] = helper(memo, n - 1) + helper(memo, n - 2); return memo[n]; }}//带备忘录法int fib_1(int N) { if (N <= 1) { retur ...
算法期末复习
用思维导图整理了一下算法的基本知识
算法概述
递归与分治策略
动态规划
贪心算法
回溯法
分支限界法
PDF文件(内有超链接)
参考资料:
算法中的P问题、NP问题、NP完全问题和NP难问题
分治法之棋盘覆盖问题
排序之归并排序
教你彻底学会动态规划——入门篇
矩阵连乘
最小生成树的两种方法(Kruskal算法和Prim算法)
循环赛日程表(分治法)
最后推荐一个算法可视化的网站VisuAlgo
软件体系结构基本知识——期末复习
根据老师画的重点做了一些思维导图,希望可以帮到需要的人
第一章
第二章
第三章
第四章
第六章
第七章
第八-九章
PDF文件
做得如有不足,敬请谅解~
图的邻接表表示转换成邻接矩阵
算法思想:先初始化邻接矩阵。依次遍历各个顶点的边表,根据边表中记录的“改弧所指向的顶点的位置”修改邻接矩阵arc[i][j]的值。例如遍历第 i 行的时候(当前的顶点所在行数为 i ),依次遍历该顶点的边表结点,若当前顶点的弧顶点的位置为j,则arc[i][j] = 1
创建如下的图:
全部代码如下:
#include <iostream>using namespace std;#pragma region 创建邻接表存储的无向图#define MaxVertexNum 100 //图中顶点数目最大值#define VertexType char#define _for(i,a,b) for(int i=(a);i<(b);i++)typedef struct ArcNode { //边表结点 int adjvex; //该弧所指向的顶点的位置 ArcNode* next; //指向下一条弧的指针}ArcNode;typedef struct VNode { / ...
LeetCode 131. Palindrome Partitioning
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
Example:
Input: “aab”Output:[ [“aa”,”b”], [“a”,”a”,”b”]]
题目链接
可以回溯法切割出来字串,然后判断是否为回文串
由于要找出来全部的字串,所有回溯的范围应该是全部遍历一遍。使用for循环进行横向的遍历,for循环结束的条件就是本层集合的个数(也就是树中孩子的数量),cur代表当前要切割的位置
for(int i=cur;i<s.length();i++)
然后进行纵向的遍历,每当切割出来一个回文串,就把其放入tmp中,然后进行回溯。否则跳过。
if(Ispalindrome(s,cur,i)){ string item=s.substr(cur,i-cur+1); tmp.pu ...
LeetCode 47 Permutations II
Given a collection of numbers, nums, that might contain duplicates, return all possible unique permutations in any order.Example 1:
Input: nums = [1,1,2]Output:[[1,1,2], [1,2,1], [2,1,1]]Example 2:
Input: nums = [1,2,3]Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Constraints:
1 <= nums.length <= 8-10 <= nums[i] <= 10
题目链接
这道题在全排列1上添加了重复的元素,所以剪枝的情况要多考虑一种。比如1,2,2’2,2’与2’,2其实是一种情况,所以要舍去。而对于重复的元素,一开始先排序是一个不错的选择。再排序完之后,如果当前元素和上一个元素相等并且上一个元素还没有被用过(但是后面一定会被用到造成重复),这样的时候就要考虑剪枝
i ...
LeetCode 46. Permutations
Given a collection of distinct integers, return all possible permutations.Example:
Input: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
题目链接
看了看大佬们的讲解,终于自己做出来一道回溯的题。回溯大致分为三步:
终止条件:回溯到什么情况就可以加入答案列表
剪枝条件:什么情况下就可以停止回溯直接continue
回溯范围:如何将当前层和下一层联系起来继续递归下去
对于这道全排列的题,我们需要一个res保存答案,一个temp参与回溯,当达到终于条件也就是temp的大小与nums的相等时便把temp加入res中;然后需要一个check数组来标记使用过的元素,当一个数已经被使用过便把对应的位置的值设为1,这样避免了一个数重复使用多次。由于这道题是要列出所有的排列结果,所以需要全部遍历
代码如下:
class Solution {public: vector<vector&l ...