- 博客(97)
- 资源 (11)
- 收藏
- 关注
原创 VScode配置C/C++环境--常用的5个插件
1)首先安装vscodehttps://code.visualstudio.com/Download2)下载mingW,https://sourceforge.net/projects/mingw-w64/files/打开mingw官网,往下拉,选择MinGW-W64 GCC-8.1.0版本的x86_64-posix-seh文件下载,解压到指定的文件夹下,并对mingw内的bin文件夹配置环境变量;3)ctrl+shit+x,下载一些插件Chinese (Simplified) Lan.
2020-11-09 21:28:42
4851
原创 Linux文本编辑器--vim常用操作
vim的功能:建立、编辑、显示文本文件;插入命令:命令 作用 a 在光标所在字符后插入 A 在光标所在行尾插入 i 在光标所在字符前插入 I 在光标所在行行首插入 o 在光标下插入新行 O 在光标上插入新行 定位命令:命令 作用 :set nu 设置行号 :set nonu 取消行号 gg G 到第1行 到最后一行 nG 到第n行
2020-11-09 15:22:45
401
原创 Linux常用命令---网络命令,关机重启命令
write命令:给用户发信息,以Ctrl+D保存结束语法:write <用户名>指令所在路径:/usr/bin/write只能给在线用户发送信息;可以使用who命令查看在线用户;wall命令:发广播信息全称:write all语法:wall [message]例子:wall ShenChao is a honest man!自己也会收到这条广播信息;ping命令:测试网络连通性语法:ping 选项 IP地址 -c 指定发送次数例子...
2020-11-09 12:49:32
498
原创 Linux常用命令---压缩解压命令
压缩文件的好处:大多数病毒都无法感染压缩文件常见压缩格式:.gz, .zip, .rargzip命令压缩方法:gzip 文件名; 将指定文件压缩成.gz文件,源文件不存在了;解压缩:gunzip [压缩文件] ;解压缩.gz的压缩文件全称:gnu unzip也可以使用gzip -d命令,它和gunzip命令的功能一样gzip压缩文件的压缩比达到了近5倍;注意:1. gzip只能压缩文件,不能压缩目录;2.gzip不保留源文件tar命令:打包目录语法
2020-11-09 10:26:07
916
原创 Linux常用命令--用户管理命令
useradd命令:用户管理命令,添加新用户执行权限:/user/sbin/useradd语法:useradd 用户名例子:useradd yangmi添加的用户必须是系统中不存在的用户passwd命令:设置(更改)用户密码执行权限:所有用户命令所在路径:/usr/bin/passwd语法:passwd 用户名who命令:查看登录用户信息命令所在路径:/usr/bin/who当前只有一个用户登录显示内容:登录用户名 登录终端(tty 本地终端 pts远程终端)
2020-11-09 09:46:59
205
原创 Linux常用命令--帮助命令
man命令:获得帮助信息(manual)语法:man [命令或配置文件]例子:man ls 查看ls命令的帮助信息例子: man services 查看 配置文件services的帮助信息/-l 查询帮助信息中-l内容f/空格, PageDn: 向下翻页Enter: 向下一行pageUp: 向上翻页↑: 向上一行↓:向下一行·1--命令的帮助, 5--配置文件的帮助passwd既是命令又有配置文件,man命令优先查看命令,如果想查看配置文件,需要使用命令:
2020-11-09 09:22:02
237
原创 Linux常用命令---文件搜索命令find
find命令:文件搜索语法:find [搜索范围] [匹配条件]-name 根据文件名搜索例子:find /etc -name init 在目录/etc下搜索文件名为init的文件 find /etc -name *init* 通配符搜索,文件中包含init find /etc -name init* 以init开头的文件 find /etc -name init? 以init开头,且文件名为五个字符的文件补充:...
2020-11-09 08:38:13
480
原创 Linux常用命令--权限管理命令
chmod命令:改变文件或目录的权限只有两个用户可以修改文件的权限,一个是文件的所有者,一个是root用户change the permissions mode of a file语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录] // a表示所有用户, +添加权限,-删除权限, =赋值权限 [mode=42] [文件或目录] -R 递归修改, 针对文件夹中所有的文件,...
2020-11-08 21:56:43
491
原创 Linux常用命令--文件处理命令
命令格式:命令 [-选项] [参数]例:ls -al /etcls命令 :查看指定目录下文件,默认为当前文件夹;-a:等于--all,查看所有文件,包括隐藏文件ls /etc :/etc目录下的文件-l: long长格式显示,可以查看文件的相关属性这里2表示一个引用计数,这里表示有2个引用计数,有点像硬链接的个数。文件的所有者只能有一个,一般谁创建属于谁,也可以将文件的所有者改成其他所有者,但只能有一个所有者 ;所属组,针对多用户的情况,多个用户可以同属于一个组,一个文件
2020-11-08 20:53:27
429
原创 排序算法-希尔排序
package com.ifreewolf.test.sort;import java.util.logging.SimpleFormatter;/** * @author fgs * @since 2020/10/11 10:10 */public class ShellSort { public static int SIZE = 10; public static void shellSort(int[] a) { int i, j, h; ...
2020-10-12 00:25:40
144
原创 排序算法-快速排序
package com.ifreewolf.test.sort;/** * @author fgs * @since 2020/10/11 11:32 */public class QuickSort { static final int SIZE = 18; public static void quickSort(int[] arr, int left, int right){ int f, t; int rtemp, ltemp; ...
2020-10-12 00:23:42
140
原创 平衡二叉树
一.前沿二叉排序树(又叫二叉搜索树):左子树上的所有节点的值均小于根节点值,而右子树上所有节点的值均大于根节点的值。平衡二叉树也是一种二叉排序树,同时保证左右子树的高度差小于大于1,避免了二叉搜索树”链表化“。二.平衡二叉树先按照生成二叉搜索树的方法构造二叉树,直至二叉树变得不平衡,即出现这样的节点:左子树与右子树的高度差大于1。至于如何调整,要看插入的导致二叉树不平衡的节点的位置。主要有四种调整方式:LL(左旋)、RR(右旋)、LR(先左旋再右旋)、RL(先右旋再左旋)。1.左旋
2020-09-29 15:46:05
399
原创 排序算法-堆排序
堆排序的算法解析:堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造
2020-09-28 17:14:09
231
原创 二维矩阵最短路径 :广度优先搜索
题目:要去一个任务点(任务点用字符”T“ 表示)完成任务, 地图上多个传送点(传送点用字符"X" 表示)。可以选择任意一个传送点作为起点, 请问哪些传送点到任务点的距离最短。在地图上只能上下左右移动,不能斜着移动。输入描述:第一行包含2个整数N和M, 接下来N行每行包含M个字符, 字符”T“表示任务点(只有一个), 字符”X“表示传送点,字符”0“表示可以通行的路, 字符”1“表示不可以通行的障碍物。输出描述:输出两行,第一行包含一个整数,表示传送点到任务点的最短距离,第二行包含到
2020-09-26 22:50:16
1061
原创 数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。方法一:HashMapclass Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { unordered_map<int, int> mp; for(const int k : data) ++mp[k];
2020-09-26 19:00:19
147
2
原创 二进制中1的个数
题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。方法一:二进制移位法class Solution {public: int NumberOf1(int n) { int ans = 0; int mark = 0x01; while(mark != 0){ if(mark & n) ++ans; mark <<= 1;
2020-09-26 17:12:31
115
原创 C++二叉树结点实现和初始化
二叉树结点通常使用struct结构体来定义:#include<iostream>using namespace std;struct TreeNode{ int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};int main(){ TreeNode *root = new TreeNo
2020-09-18 22:49:59
2600
原创 C++中double保留n位小数
方法一:c语言中的方法#include<cstdio>printf("%.3f", a);方法二:C++中iomanip头文件#include<iomanip>double x = 123.123456789;cout << setiosflags(ios::fixed) << setprecision(3) << std::fixed << x << endl;cout<< setio
2020-09-18 21:45:50
11169
原创 c++基础:双冒号的使用
#include<iostream>using namespace std;int atk = 200;int main(){ int atk = 100; cout<<"局部atk = " << atk << endl; # 100 // 双冒号 作用域运算符 :: 全局作用域, 冒号前没有任何值,表示全局作用域, // std::cout 表示std作用域中的cout函数 cout&l.
2020-09-16 23:23:57
2082
原创 2020-09-09
class Solution {public: int rob(vector<int>& nums) { if (nums.empty()) { return 0; } int size = nums.size(); if (size == 1) { return nums[0]; } vector<int> dp = v.
2020-09-10 20:53:22
93
原创 反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。初始化:3个指针1)pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向nullptr2)cur指针指向待反转链表的第一个节点,最开始第一个节点待反转,所以指向head3)nex指针指向待反转链表的第二个节点,目的是保存链表,因为cur改变指向后,后面的链表则失效了,所以需要保存接下来,循环执行以下三个操作1)nex = cur->next, 保存作用2)cur->next = pre 未反转链表的第一个节
2020-09-06 17:27:21
234
原创 位移法实现加法运算
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题解题目描述:不使用加减乘除来实现两数加法、方法:位运算知识补充: 按位与&,按位或|, 按位异或^ 2.补码计算机中存整数n是用补码存的。如果n为正数,则原码=反码=补码 如果n为负数,则补码=反码+1本题是考察对位运算的运用,使用位运算来实现两数的加法。设两数字的二进制形式 a,b ,其求和 s = a + b ,a(i) 代表 a 的二进制第 i 位,则分为以下
2020-09-06 16:26:24
875
原创 把字符串转换成int整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0题解题目意思很明确,这道题难就难在边界的考察。如果对于一般规则的数字“字符串”转化为数字都很容易,比如:int的范围为[2^{31}-1, -2^{31}][231−1,−231]如果超过了这两个范围该怎么办?其实也很简单,首先判断这个数的正.
2020-09-06 13:18:00
4635
原创 数组中重复的数字:数组+哈希, in-place
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。方法一:哈希+遍历题目中含有重复的字眼,第一反应应该想到哈希,set。这里我们用哈希来解。算法步骤:开辟一个长度为n的vector<bool>, 初始化为false</bool> 遍历数组,第一
2020-09-05 10:07:49
159
原创 构建乘积数组:动态规划的应用
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。题解题目描述:给定一个长度为n的数组A,求数组B,B[i] = A
2020-09-05 08:54:13
157
原创 C++正则表达式的应用
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。#include <regex>class Solution {public: bool isNumeric(char* s) { if(!s || *s=='\0'){ r
2020-09-04 23:21:15
130
原创 字符流中第一个不重复的字符:队列和unorder_map的应用
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。方法:哈希+队列针对题目的描述,我们先提出两个问题?Q1. 给定一个字符串(只不过这里的字符串是可变的),如果快速判断一个字符是否存在于字符串中,如果存在,也就是重复?Q2. 这里先不考虑重复,如果快速返回第一个字符?有没有感觉有点像先来先服务?对于一道题,如果没有思路
2020-09-04 23:12:56
202
原创 输出数组的全排列
void perm(int list[], int k, int m){ if ( ) { copy(list,list+m,ostream_iterator<int>(cout," ")); cout<<endl; return; } for (int i=k; i<=m; i++) { swap(&list[k],&list[i]); .
2020-09-02 11:19:03
686
原创 链表中环的入口结点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。方法一:哈希法1.遍历单链表的每个结点2.如果当前结点地址没有出现在set中,则存入set中3.否则,出现在set中,则当前结点就是环的入口结点4.整个单链表遍历完,若没出现在set中,则不存在环代码class Solution {public: ListNode* EntryNodeOfLoop(ListNode* pHead) { unordered_set&
2020-08-30 19:18:24
300
原创 删除链表中重复的节点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路:我的思路是先定义一个哑节点dump,哑节点的next指向pHead的第一个元素。定义一个pre指针指向哑节点dump,定义一个cur指针指向pHead的第一个节点。1.判断pre->next->val==pre->next->val,
2020-08-30 16:43:03
115
原创 二叉树的下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。红色数字是中序遍历的顺序。接下来,我们就假设,如果当前结点分别是1,2 ... 7,下一结点看有什么规律没?1 => 2 // 显然下一结点是 1 的父亲结点2 => 3 // 下一节点是当前结点右孩子的左孩子结点,其实你也应该想到了,应该是一直到左孩子为空的那个结点3 => 4 // 跟 2 的情况相似,当前结点右孩子结点的左
2020-08-30 11:37:34
244
原创 对称的二叉树:递归的使用
题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。题解题目描述:给定一颗二叉树,判断此二叉树是否为对称二叉树。根据上图可知:若满足对称二叉树,必须满足:1. L->val == R->val2. L->left->val == R->right->val3. L->right->val == R->left->val设置一个递归函数isSame(r
2020-08-30 09:49:06
212
原创 把二叉树打印成多行:广度优先的使用
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。方法:队列层次遍历打印二叉树,用队列实现。BFS的模板为:1.如果不需要确定当前遍历到了哪一层,模板如下:void bfs() { vis[] = {0}; // or set queue<int> pq(start_val); while (!pq.empty()) { int cur = pq.front(); pq.pop(); for (遍历cur所有的相邻节点n
2020-08-29 21:47:17
108
原创 C++中数组解决长度不能是变量的问题
C++中数组的定义不能是变量,但是有很多时候,不能确定输入的长度;解决方法:int num;cin >> num;int *arr = new int[num];memset(arr, 0, sizeof(int)*num);
2020-08-29 20:58:13
2533
原创 剑指offer:序列化和反序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通
2020-08-26 23:23:28
100
原创 牛客网:二叉搜索树的第k个结点
题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。方法一:递归方法这个方法的思路是先将指针移到最左端,然后再回溯,这个时候需要添加对右字符的遍历。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x..
2020-08-26 22:45:01
148
原创 剑指offer:数据流中的中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。方法一:查找排序法思路:得到输入数组arr,可以获得len的长度,因此需要获得arr的前len/2数据量获得排序。class Solution {public: vector<int>
2020-08-25 22:42:28
167
原创 算法题:滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2
2020-08-23 19:15:33
237
原创 回溯法
回溯法也是使用深度优先或者广度优先的方法进行遍历:回溯法的使用流程一般如下:dfs(){ // 第一步,检查下标是否满足条件 // 第二步:检查是否被访问过,或者是否满足当前匹配条件 // 第三步:检查是否满足返回结果条件 // 第四步:都没有返回,说明应该进行下一步递归 // 标记 dfs(下一次) // 回溯} main() { for (对所有可能情况) { dfs() }}
2020-08-23 15:08:22
202
Algorithms on Strings, Trees and Sequences 高清英文版
2019-03-19
彻底卸载vs2015工具
2018-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人