自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fang 0 jun的博客

解决人生痛苦的唯一途径,是让自己全神贯注,埋头于理智的生活中

  • 博客(184)
  • 收藏
  • 关注

原创 leetcode(33): 相同的树(回溯)

文章目录题目描述法一:dfs题目描述法一:dfs/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(n

2020-10-06 11:09:51 86

原创 leetcode(32): 组合总和(回溯)

文章目录题目描述法一:dfs题目描述法一:dfsclass Solution {public: void dfs(vector<int>& candidates, int target, vector<vector<int>>& ans, vector<int>& combine, int idx) { if (idx == candidates.size()) { retur

2020-10-06 10:43:47 140

原创 《算法4》读书笔记(2): dfs的c++实现

dfs实现#ifndef DFSCC_H_INCLUDED#define DFSCC_H_INCLUDED/*DFS 深搜思路:所有未标记的节点 执行一遍完整DFS遍历DFS代表从某一个节点出发 能到达的所有节点都会被标记*/#include"Graph.h"class DFS{private: vector<bool> marked; int count =0;public: DFS(Graph* G, int s){

2020-10-06 09:40:07 152

原创 《算法4》读书笔记(1): 图构建api的c++实现

文章目录1. 源码2. 总结2.1 c++中resize函数的用法2.2 更灵活的数据输入方式 ifstream getline() ifstringstream()c++中的 istringstream 的用法c++ 中getline函数用法详解1. 源码// 《算法》第四版中 图构建的相关API的c++实现#ifndef GRAPH_H_INCLUDED#define GRAPH_H_INCLUDED#include "func.h"class Graph{private: in

2020-10-05 23:32:21 151

原创 leetcode(31): 最长公共前缀

文章目录题目描述法一: substr法二:题目描述法一: substrclass Solution {public: int strStr(string haystack, string needle) { int end = haystack.size(); int size = needle.size(); string s; for(int i = 0; i < end - size + 1; i++){

2020-10-05 22:13:23 112

原创 详解C中系统调用 link(), lseek()

C语言lseek()函数:移动文件的读写位置|| 头文件与函数定义#include <sys/types.h> #include <unistd.h>off_t lseek( int fildes, off_t offset, int whence);|| 函数说明:每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置

2020-09-30 10:23:48 948

原创 数据结构(严蔚敏)读书笔记(4): 串(KMP)

文章目录一,串二,串的模式匹配算法 - KPM1.什么是KMP2.为什么可以移位?1.从公式推导来说2.从直观来说3.对移位规则的实现 --- Next[]4.【一句话总结】在计算机中的实现KPM的流程1.KMP实现: i,j位比较,相等时S,T同进位,相异时T移位进行前缀匹配2.构建Next[]:找Next[j+1],就是看能否扩充T[1, j]中的子前缀5.具体代码实现和解释附:修正后的Next代码一,串|| 串(字符串) 是特殊的线性表,唯一的区别在于串的数据对象约束为字符集|| 串的储存结构

2020-09-28 16:09:46 316

原创 一句话总结KMP算法的实现流程(争取)

从公式上和直观上解释KMP算法。理解KMP算法的真正思想,并解释获得next的五行代码

2020-09-28 15:01:04 561

原创 数据结构(严蔚敏)读书笔记 (3): 栈和队列

文章目录顺序栈链栈有关递归顺序队列(循环队列)链队顺序栈#include<iostream>#include<stdlib.h>#include<bits/stdc++.h>using namespace std;#define OK 1#define ERROR 0#define MAX 1000typedef int ElemType;typedef struct { ElemType *base; ElemType *top; int

2020-09-27 22:35:34 270

原创 数据结构(严蔚敏)读书笔记 (2): 线性表

文章目录顺序表链表双向表顺序表#include<iostream>#include<stdlib.h>using namespace std;#define OK 1#define ERROR 0#define MAX 1000typedef int ElemType;typedef struct{ ElemType *elem; int length;}SqList;int InitList(SqList &L){ L.elem =

2020-09-27 20:41:45 178

原创 数据结构(严蔚敏)读书笔记 (1): 绪论

数据结构(严蔚敏)读书笔记 (1): 绪论

2020-09-26 10:44:18 212

原创 详解C中的系统调用open/close/read/write

先谈谈open/close/read/write与fopen/fclose/fread/fwrite的区别open() and close()read() and write()实操:代码示例1 将in.txt文件中的内容写入到out.txt文件中(一个一个字符写入)2 将in.txt文件中的内容写入到out.txt文件中(数组写入)

2020-09-23 10:01:35 3347

原创 C中文件操作复习

文章目录fopen()fputc() 和 fgetc()fgets()fputs()fread()和fwrite()读写函数的区别详解EOF|| FILE 是系统定义的一个类型,其中包含由文件的各种信息,如文件名,文件地址|| 我们一般使用FILE *fp —— 一个文件指针来操作文件fopen()|| fopen():用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, const char * mode); 打开成功时返回类型为文件指针,若打

2020-09-22 23:39:03 226

原创 文本文件和二进制文件的差异和区别

文章目录编码上的区别存取上的区别优缺点编码上的区别计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值(可以看作是自定义编码)。文本文件基本上是定长编码的(也有非定长的编码如UTF-8),基于字符,每个字符在具体编码中是固定的,ASCII码是8个比特的编码,UNICODE一般占1

2020-09-22 23:23:30 2734

原创 解决git push报错: hint: Updates were rejected because the tip of your current branch is behind和各种其它小报错

解决git push报错: hint: Updates were rejected because the tip of your current branch is behind和 各种其他小报错

2020-09-17 11:07:19 2589

原创 一篇文章搞定用git把项目推送到github

【 git 】更新:解决以下报错:在push前pull,更新本地仓库error: failed to push some refs to hint: Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref.

2020-09-15 01:36:56 166

原创 高斯消元法解线性方程组和矩阵求逆(C++面向对象实现)

实现了两个向量和矩阵的基本类,针对处理对象创建了MatrixVector类和MatrixMatrix类有些地方为了保证代码耦合性,没有使用更低复杂度的写法(影响不大:)文章目录0. 预处理1. Vector向量类2. Matrix矩阵类3. MatrixVector类4. MatrixMatrix类5. 运行调用0. 预处理#include <iostream>#include <stdio.h>#include <stdlib.h>#include &lt

2020-09-14 17:53:55 1082

原创 【模板】Kruskal算法求最小生成树

文章目录Kruskal算法介绍模板实现例题Kruskal算法介绍克鲁斯卡尔算法可以称为“加边法”,初始最小生成树边数为0,每迭代一次就选择一条满足条件的最小代价边,加入到最小生成树的边集合里。把图中的所有边按代价从小到大排序;把图中的n个顶点看成独立的n棵树组成的森林;按权值从小到大选择边,所选的边连接的两个顶点ui,viui,vi,应属于两颗不同的树,则成为最小生成树的一条边,并将这两颗树合并作为一颗树。重复(3),直到所有顶点都在一颗树内或者有n-1条边为止。从小开始加 (权重),且确

2020-09-14 11:30:59 1068

原创 语法分析的一些总结

ps:此处处理的输入为 数学表达式(如 3+4*5…),不为词法分析器分析后的输出的单词流|| 语法分析的分析规则:上下文无关文法(定义:CFG(N, T, S, R)N - Nonterminal - 非终结符T - Terminal - 终结符S - Start Character - 开始符号R - Syntax Rule - 语法规则|| 语法分析的分析方式:语法分析器有不同的算法可以进行语法分析,一般来说,语法分析的算法分为两种,自顶向下的算法和自底向上的算法,而这两类算法又有很多

2020-09-13 17:20:14 2889

原创 C++语法学习_专栏目录

为了方便查阅复习,将自己原来撰写的博文进行整理,C++语法专栏目录如下:C++语法学习(0): 基础语法上与C的异同C++语法学习(1): 封装C++语法学习(2): 继承C++语法学习(3): 多态C++语法学习(4): 模板C++语法学习(5): STLC++语法学习(6): stringC++语法学习(7): vector(持续更新中)...

2020-09-13 14:19:14 142

原创 leetcode(30): 四数之和

文章目录题目描述法一:常规的多指针总结:题目描述法一:常规的多指针class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { int size = nums.size(); vector<vector<int>> res; sort(nums.begin(),nums

2020-09-13 11:07:57 98

原创 leetcode(29): 三数之和

文章目录题目描述法一:常规的双指针总结:题目描述法一:常规的双指针class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { int size = nums.size(); vector<vector<int>> reses; sort(nums.begin(), nums.end());

2020-09-13 10:37:44 88

转载 c++中的随机数rand()

总结:1, RANK_MAX = 32767 2, 随机范围:num = rank() % xC++中rand() 函数的用法1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。2、如果你要产生0~99这100个整数中的一个随机整数,可以表达为:int num = rand() % 100;这样,num的值就是一个0~99中的一个随机数了。3、如果要产生1~100,则是这样:int num = rand() % 100 + 1;4、

2020-09-12 21:57:29 29725 2

原创 【模板】自动机

代码实现/* ---------------------模板-----------------------*/class Automaton { string state = "start"; unordered_map<string, vector<string>> table = { {"start", {"start", "signed", "in_number", "end"}}, {"signed", {"end", ..

2020-09-12 15:43:19 193

原创 leetcode(28): 字符串转换整数(实现atoi)

文章目录题目描述法一:确定有限自动状态机(DFA)总结:|| 相关知识的复习跳转链接 —> Engineering a Compiler读书笔记(2):词法分析器题目描述法一:确定有限自动状态机(DFA)class Automaton { string state = "start"; unordered_map<string, vector<string>> table = { {"start", {"start", "sig

2020-09-12 15:39:31 110

原创 leetcode(27): 字符串乘法

文章目录法一:竖式乘法的实现(各个位数先相乘后将乘数相加)法一:竖式乘法的实现(各个位数先相乘后将乘数相加)class Solution {public: string addStrings(string num1, string num2) { //if(num1 == "0" || nums == "0") return (num1 == "0") ? num2 : num1; int size1 = num1.size(); int s

2020-09-09 15:36:14 113

原创 leetcode(26): 字符串相加

文章目录法一:短的跳过,直接相加法二:短的补零,壹壹对应相加总结:法一:短的跳过,直接相加class Solution {public: string addStrings(string num1, string num2) { //if(num1 == "0" || nums == "0") return (num1 == "0") ? num2 : num1; int size1 = num1.size(); int size2 = num

2020-09-09 15:35:21 114

原创 leetcode(25): 零矩阵

文章目录法一:总结:法一:class Solution {public: void clear(int x, int y, vector<vector<int>> & map){ for(int i = 0; i < map[x].size(); i++){ map[x][i] = 0; } for(int i = 0; i < map.size(); i++){

2020-09-09 15:24:09 93

原创 leetcode(24): 单词频率

法一:hash表class WordsFrequency {private: unordered_map<string, int> hash;public: WordsFrequency(vector<string>& book) { for(int i = 0; i < book.size(); i++){ hash[book[i]]++; } } int g.

2020-08-28 09:22:47 198

原创 数学分析(一)专栏目录

为了方便查阅复习,将自己原来撰写的博文进行整理,数学分析(一)专栏目录如下:数学分析(1): 实数数学分析(2): 数列极限数学分析(3): 函数极限数学分析(4): 函数的连续性数学分析(5): 导数数学分析(6): 微分数学分析(7): 微分中值定理数学分析(8): 实数的完备性数学分析(9): 不定积分...

2020-08-25 16:55:48 1177

原创 leetcode(23): 复杂链表的复制

文章目录法一:使用unordered_map法二:使用递归总结:法一:使用unordered_map/*// Definition for a Node.class Node {public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; }};*/cl..

2020-08-25 11:01:06 186

原创 leetcode(22): 找到所有数组中消失的数字

法一:类似hash类似哈希表的构造,但是不使用hashclass Solution {public:vector<int> findDisappearedNumbers(vector<int>& nums) { int n = nums.size(); if(n<=1) return {}; vector<int> res; for(int i = 0;i<n;++i){ .

2020-08-24 08:58:10 209

原创 Matlab操作(2):线性代数中求矩阵相关数据的高级方法

特征多项式设A为n阶方阵, 如果数“ ”和n维列向量x使得关系式 成立, 则称 为方阵A的特征值, 非零向量x称为A对应于特征值“ ”的特征向量。poly(A),返回矩阵A的特征多项式的向量表示形式,例如:>>A=[1 0;2 3];>>p=poly(A) %矩阵A的特征多项式的向量表示形式>>p = 1 -4 3>>f=poly2str(p,’x’) %矩阵A的特征多项式>>

2020-08-23 08:36:26 1904

原创 Matlab操作(1):基础的矩阵操作及运算

文章目录向量 / 矩阵的生成定义一个向量/矩阵矩阵生成的内置函数向量 / 矩阵的属性矩阵的大小矩阵的维度向量 / 矩阵的运算获取矩阵中的元素矩阵的元素重新赋值:矩阵进行扩展:(常用于增广矩阵)矩阵间的运算矩阵间的点运算矩阵的常用操作汇总 ( 重要!!)求解线性方程组 ( 重要!!)向量 / 矩阵的生成定义一个向量/矩阵>> A = [1 2; 3 4; 5 6]A = 1 2 3 4 5 6>> A = [1 2; % ;号在.

2020-08-22 19:05:14 528

原创 leetcode(21): 二维数组中的查找

文章目录法一: 双指针总结:法一: 双指针class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size()==0 || matrix[0].size() == 0) return false; int m = matrix.size(), n = matrix.

2020-08-17 13:19:35 170

转载 Github下载加速

经常从GitHub下载代码非常慢,有时还容易卡住。例如从GitHub上下载OpenCV,速度太慢,下载几次都没下载下来。于是网上找看看有没有GitHub下载加速的办法,找了好几处,还是觉得使用国内网站码云间接下载更方便。 码云是开源中国出品的代码托管协作开发云平台。码云官网地址:https://gitee.com/下面举例介绍如何利用码云下载GitHub上的资源。第一步: 登录码云,没有账号可以注册登录。第二步: 如下图所示,点击进入: 从GitHub/GitLab 导入仓库 。第三步

2020-08-14 11:06:23 361

转载 c++快速掌握匿名函数

文章目录1、匿名函数的使用2、什么是捕获列表?3、一些”废话“3.2、Lambda捕获列表1、匿名函数的使用匿名函数的基本语法为://[捕获列表](参数列表)->返回类型{函数体}int main(){ auto Add = [](int a, int b)->int { return a + b; }; std::cout << Add(1, 2) << std::endl; return 0;}上述代码便会输出3,这就是匿名函数的使用方法。

2020-08-13 23:44:55 1003

原创 leetcode(20): 顺时针打印矩阵

文章目录|| 法一:辅助矩阵与方向数组|| 法二:定位遍历总结|| 法一:辅助矩阵与方向数组class Solution {private: static constexpr int directions[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if(matrix.size().

2020-08-06 21:17:41 385

原创 Dijkstra(迪杰斯特拉)算法

文章目录算法描述算法实现算法描述|描述:Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。由for循环可知,其时间复杂度是O(n^2)。|原理:在已知图的邻接矩阵 net.vexs[i ] [j](无向网,含权值的图)的条件下,通过遍历已知图的所有路径,用 dis[i] 数组来记录到i点的最短路径,然后在循环中不断判断更替。首先,将所有点的集合分为俩部分,一边是已经遍历过的,另外一边是没有

2020-08-03 00:46:53 4720

原创 弗洛伊德循环查找算法(快慢指针法/龟兔指针法)

文章目录算法原理算法模板算法原理这个算法是两个指针,一个跑的快,一个跑得慢。在龟兔赛跑的寓言中,跑的快的称为 “乌龟”,跑得快的称为 “兔子”。不管乌龟和兔子在循环中从哪里开始,它们最终都会相遇。这是因为兔子每走一步就向乌龟靠近一个节点(在它们的移动方向上)。通过快慢指针则可以避免使用数据结构记忆,检测是否有循环,在求取最短路径也会使用算法模板while (fastNode && fastNode.next()) { if (fastNode.next() == s

2020-08-03 00:45:41 1382

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除