自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (3)
  • 收藏
  • 关注

原创 文件基本属性

linux文件属性

2023-09-19 23:26:18 386

原创 利用GDB中coredump快速定位

gdb定位coredump段错误位置

2023-01-31 19:08:20 595

原创 cpp几种可变参数包展开方法

cpp几种可变参数包展开方法

2022-12-29 20:19:04 265

原创 设计模式之观察者模式

设计模式之观察者模式的简单学习

2022-11-03 21:05:34 197

原创 蚂蚁集团2022-09-15笔试

子串的定义:一个字符串取一段连续的区间得到的新字符串。例如"arcaea"的子串有"arc"、"ca"等,但"ara”则不是它的子串。例如,可以把’b’变成两个’a’,可以把z’变成两个’y。请你输出长度最短的合法字符串,有多解时输出任意即可。一个字符串,代表小红操作前的字符串。如果有多个合法解,输出任意一个合法字符串即可。小红定义一个字符串是好串,当且仅当只有一个字符出现的次数为奇数,其它字母均为偶数。一个不超过200000的,仅由小写字母组成的字符串。一个正整数x,代表最终的’a’的数量。

2022-09-15 20:53:50 2887

原创 STL中next_permutation的使用

STL中next_permutation的使用

2022-09-15 16:51:55 344

原创 记一个SGI空间配置器的设置OOM处理函数的用法

学习SGI中的oom_handler的设置方式。

2022-08-29 16:00:47 161

原创 秒杀:只出现一次的数字系列

给定一个数组,数组中只有一个元素出现1次,其余元素都出现k次,请找出出现1次的元素;

2022-08-14 14:54:00 142

原创 早悟兰因(兰因絮果)

该词出自《锁麟囊》,其意大概为:早点参悟因果。在我国古代山东一带,女儿出嫁上轿前,母亲要送一只绣有麒麟的荷包,里面装上珠宝首饰,希望女儿婚后早得贵子,这只荷包锦袋也叫做“锁麟囊”,含麒麟送子之意。早悟兰因便出自该剧《锁麟囊》:“他教我收余恨、免娇嗔、且自新、改性情、休恋逝水、苦海回身、早悟兰因。”:比喻美好的结合。:比喻离散的结局。:比喻男女婚事初时美满,最终离异。亦作絮果兰因。出自《周易·系辞上》:“二人同心,其利断金;同心之言,其臭如兰。”出自《咏雪》谢道韫家宴中一句“未若柳絮因风起”。...

2022-08-10 16:35:31 19087

原创 扩展题:删除有序数组中重复元素

删除有序数组中重复项的k次扩展

2022-08-01 11:18:44 439

原创 十大排序算法:冒泡排序算法

通过不断地交换操作,将符合要求的元素不断向后移动,达到排序的效果

2022-07-30 17:33:48 245

原创 c++中的四个智能指针:shared_ptr, unique_ptr, weak_ptr, auto_ptr

为什么使用智能指针?智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上避免这个问题,因为智能指针是一个类,当超出了这个类的作用范围时,类自动调用析构函数,析构函数会释放资源。所以智能指针的作用原理就是在函数自动结束时自动释放内存空间,不需要手动释放内存空间。...

2022-07-12 15:03:00 271

原创 栈的应用:中缀,后缀,前缀表达式的相互转换,及利用后缀表达式求值

中缀,后缀,前缀

2022-05-12 11:02:20 283

原创 寻找二叉树指定节点的祖先节点

目前有两种方法:通过后序非递归遍历来寻找指定节点的所有祖先。代码示例如下:void getAnstor(TreeNode* rt){ if(rt == nullptr) return; stack<TreeNode*> stack_, ts; // ts为中间栈 unordered_set<TreeNode*> hash;// 标记节点是否访问过 stack_.push(rt); TreeNode

2022-05-10 14:35:03 2713

原创 十大排序算法:堆排序算法

sc

2022-04-14 21:07:09 181

原创 给定一个只含小写字母和数字的字符串,使用两个线程分别打印字符串中的字母和数字

#include <bits/stdc++.h>#include <unistd.h>#include <semaphore.h>#include <mutex>using namespace std;string str = "12abs45a2a";int c = 0;sem_t sem1, sem2;void func1(){ //打印字母 while(c < str.size()){ if(str[c

2022-04-14 11:17:22 406

原创 关于extern “C“

首先说明linux下生成静态链接库libxxx.a和动态链接库libxxx.so假设现在有func.h以及其中函数的实现文件func.cpp静态库.a :ar -rcs libfunc.a func.cpp动态库.so : g++ -fpic -shared func.cpp -o libfunc.sogcc和g++会优先搜索.so,其次寻找.a为了解释extern "C"需要用到工具反汇编工具objdump, 使用objdump -t *查看符号表utils.hint fun.

2022-04-09 15:00:53 799

原创 剑指 Offer 48. 最长不含重复字符的子字符串

题目描述思路lastRepeatIndex:表示上一次重复字符的下标map<char, int> hash: 比如hash[‘a’] = 2,一方面该数据结构可以判断,当前遍历字符之前有没有出现过;另一方面,可以获取如果字符出现过,出现的位置在哪。定义f数组,f[i] = k 表示str[0-i]序列的最长的不包含重复字符的子字符串的长度为k动规转移方程: | 1, i == 0 | f[i-1] + 1; i >= 1当前字符没有出现过

2022-03-18 11:10:10 450

原创 leetcode: 面试题 04.10. 检查子树

题目描述思路因为如果t2时t1的子树,那么t1中必存在至少一个节点的值与t2根节点的值相同;再者,如果两个树相同,则三个遍历序列也必然相同;根据此思路,写出代码逻辑如下:先先序(中序,后序也可)遍历t1,过程中判断当前遍历到节点的值是否与t2树根节点的值相同如果相同,进行子树是否相同判断;否则继续遍历子树是否相同的判断逻辑是:同时对两树进行先序遍历(中序,后序亦可),当当前遍历到的节点有一方为空,而另一方不为空,则两个树不同;当两个都为空时,表示是同树的;最后判断节点值,递归判断下去即可!

2022-03-17 19:58:54 304

原创 牛客:BM20 数组中的逆序对

题目描述参考:https://blog.csdn.net/qq_38984851/article/details/83242429思路具体思路参考文中引用博客,其核心在于:每次归并之后的合并操作时进行处理,假设目前数组情形如下:i指向6,j指向2,此时由于[l, m]和[m+1, r]都是有序的,所以此时[i…m]的所有元素和[j]都组成逆序对,具体个数即为m-i+1个,如果需要保存具体数对,只需将[i…m]的元素和[j]位置的元素组合即可!代码class Solution{ publ

2022-03-14 10:48:06 262

原创 牛客:BM30 二叉搜索树与双向链表

题目描述思路使用一个额外指针,控制指向,树的遍历使用中序,保证有序ac代码//左前驱,右后继 TreeNode* temp = nullptr, *root = nullptr; void helper(TreeNode* rt){ if(!rt) return; helper(rt->left); if(temp == nullptr){ temp = rt; root = rt;

2022-03-13 21:51:38 845

原创 牛客:BM28 二叉树的最大深度

题目描述思路分治:首先,自底向上处理最下面节点的深度,然后不断向上传递ac代码第一版int maxDepth(TreeNode* root) { if(root == nullptr) return 0; int l = 0, r = 0; if(root->left) l = maxDepth(root->left); if(root->right) r

2022-03-13 21:37:21 826

原创 牛客:BM22 比较版本号

问题描述解题思路正则,使用'.'进行分割,然后使用结果数组进行判断,对于前导0,字符串转数字函数会自动处理掉。stringstream,自己使用的是这个方法,使用getline进行分割,随后进行相互判断,因为两个版本号长度可能不同(用点分隔后的小段),所以在整体处理完后,需要特别处理剩余的。ac代码int compare(string version1, string version2) { // write code here istringstream is

2022-03-13 21:15:37 304

原创 大数乘法:牛客网练习

来源:牛客网描述以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。数据范围: 读入的数字大小满足 0 \le n \le 10^{1000}0≤n≤101000要求:空间复杂度 O(n)O(n),时间复杂度 O(n^2)O(n示例1输入:“11”,“99”返回值:“1089”说明:11*99=1089示例2输入:“1”,“0”返回值:“0”解题思路:思路如上,具体代码参考如下:class Solution {public: /

2022-02-20 12:39:55 496

原创 ubuntu安装zmq

四步:1. 安装libsodium库,版本号可以改 wget -N --no-check-certificate https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz tar xvf libsodium-1.0.18.tar.gz cd libsodium-1.0.18 ./configure make && make check make inst

2021-11-28 15:18:01 2503 4

原创 list::sort源码对比(侯捷老师源码剖析和c++11中当前使用的库中的实现)

首先看一下侯捷老师《STL源码剖析》中的源码// list 不能使用STL 算法 sort(),必须使用自己的 sort() member function,// 因为STL算法sort() 只接受RamdonAccessIterator.template <class T, class Alloc>void list<T, Alloc>::sort() { // 如果为空链表或只有一个元素的链表,则什么也不做 if (node->next == nod

2021-10-04 20:56:37 430

原创 json11项目.hpp阅读

Json 类中主要定义:Json数据中的数据格式Type,包括Int, double, bool, String, Array, objectJson的大量构造函数,包括1中的各个类型的构造,以及三个模板构造函数:1)对于含有to_json方法对象的构造2)对于像map,unordered_map相似的对象的构造3)对于像set,list,vector对象的构造4)对空指针类型构造的限制删除Json是1中哪种类型的判别,以及获取当前Json的类型Type声明获取Json中各种类型值的接口.

2021-09-18 20:49:49 341

原创 子集生成:递归、迭代、二进制

子集生成,给定一个数组,数组中包含一些元素(简单起见,假设其中包含的是数字)生成该集合所有的子集。比如:{1, 2, 3}子集为{{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}本题比较简单,有点像01背包问题。解题思路如下:首先,将空集合放入结果集。然后遍历源集合中的每个元素,往空集合中加还是不加。话说不太明白,举个例子{a, b, c}首先结果集合中添加{}空集合然后将结果集中的元素去除,对第一个源集合中的元素,也就是a,进.

2021-06-27 17:30:08 250

原创 算法基础:素数环

题目描述:一个环由n个圈组成,将自然数1-n放入圈内,使得任意相邻圈的两个数之和均为素数。第一个圈的元素均为1。下图为n=6时的一个例子:程序样例输入为一个整数n68输出分别为1 4 3 2 5 61 6 5 2 3 41 2 3 8 5 6 7 41 2 5 8 3 4 7 61 4 7 6 5 8 3 21 6 7 4 3 8 5 2解题思路:首先能想到的就是暴力法,全排列然后去筛选结果,但是就是存在效率低的问题。现使用深搜回溯来解决素数判断采用埃筛法具体

2021-06-25 17:43:30 791

原创 leetcode865.具有所有最深节点的最小子树

题目链接:https://leetcode-cn.com/problems/smallest-subtree-with-all-the-deepest-nodes/根据题意及几个示例分析:分几种情况:如果最深节点只有一个那么该节点就是所求的最小子树,独点成树。如果有多个节点,目的就是求这多个节点...

2021-04-21 16:25:32 148

原创 十大排序算法:希尔排序算法

希尔排序也叫缩小增量排序,是一种插入排序。#include<bits/stdc++.h>using namespace std;void shellSort(vector<int> &src){ int size = src.size(); //本排序算法需要画图一步一步分析才能清晰地晓得其中的奥秘 for(int interval = size>>1;interval > 0;interval >>= 1){

2021-04-15 10:09:50 328

原创 十大排序算法:插入排序

#include<bits/stdc++.h>using namespace std;void insertSort(vector<int> &src){ if(src.size() == 1) return;//处理只有一个元素的数组 for(int i = 1;i<src.size();++i){ int temp = src[i]; int j = i -1; while(j>=0){

2021-04-15 09:59:44 80

原创 十大排序算法:归并排序算法

一、思路 【分治模式:重点在于合并】分解: 将n个元素分割成个n/2个元素的子序列解决: 将两个子序列递归的排序合并: 合并两个已经排好序的子序列得到结果形式代码void sort(vector<int> &A,int l,int r){ if(l < r){ int mid = (l + r)>>1; sort(A,l,mid);//对左侧排序 sort(A,mid+1,r);//对右侧排序 merge(A,l,mid,r);//合并

2021-04-10 22:35:32 154

原创 十大排序算法:快速排序算法

一、快速排序算法思想或步骤分解: 数组A[p…r]被划分为两个子数组A[p…q-1]和A[q+1…r],使得A[q]为大小居中的数,左侧A[p…q-1]中的每个元素都小于等于它,而右边A[q+1…r]每个元素都大于等于它。解决: 通过递归调用快速排序,对子数组A[p…q-1]和A[q+1…r]进行排序。合并: 因为子数组都是在原址进行排序,所以不需要合并,原数组已经有序。通过上述描述发现:划分是问题的关键算法的就可以写出如下框架:void quickSort(A,p,r){ if(p&lt

2021-04-09 21:33:43 5747

原创 从有序顺序表中删除值重复的元素,是表中元素均不相同

/* 参数Data数组为要处理的数据 *length存储数组长度 返回值失败返回0,成功返回1*/int Delete_Same(int Data[], int* length) { if (*length == 0) return 0; int i,j; for (i = 0, j = 1; j < *length; j++) if (Data[i] != Dat...

2021-04-07 21:41:40 140

原创 一个有趣的题(要求越界危险题)

题目要求:在如下代码中适当添加代码实现输出len变量的值为1361654881#include<stdio.h>#include<stdlib.h>int main() { int len = 0; char str[8] = { 0 }; printf("输入构造的串\n"); scanf("%s", str); printf("len=[%d]\n...

2021-04-07 21:37:34 79

原创 最大子序列和问题

问题描述:给定一个A1,A2,…,AN(可能有负数),求其中连续的的子序列的和的最大值为多少?例:-2,11,-4,13,-5,-2的最大子序列和为20,从11到13。算法很多,目前遇到的最好的一个算法,复杂度为O(N)。int MaxSubsequenceSum(vector<int> A) { int CurSum, MaxSum; CurSum = MaxSum = 0; for (const int eve : A) { CurSum += eve; if (CurS

2021-04-07 21:31:59 217

原创 关于使用vector保存指针变量时需要注意的一个小问题

最近写了一个小程序,代码如下,功能是求一个树的重心被选中时所对应的子树中节点个数中最大值的最小值。首先看错误代码,该代码可以正常跑出结果,问题在内存释放上。/* 树的重心*/#include<iostream>#include<stdlib.h>#include<vector>#include<algorithm>#include<iterator>#include<cassert>using namespa

2020-12-22 12:26:13 549

原创 文档排版软件CTex,Winedt10使用(二)--- 简单案例

pass

2020-11-20 14:05:57 456

原创 文档排版软件CTex,Winedt10使用(一)---安装

pass

2020-11-20 13:57:38 1418 1

Qt_multithread.zip

通过一个继承QThread重写run虚函数完成多线程服务器的编写,目的是方便日后学习和回顾,对于Qt5.12多线程通信,多线程,网络通信简单的介绍。

2020-05-28

multithread_network.zip

通过一个继承QThread重写run虚函数完成多线程服务器的编写,目的是方便日后学习和回顾,对于Qt5.12多线程通信,多线程,网络通信简单的介绍,方便学习

2020-05-28

databasewidget.zip

qt5.12下利用qt提供的相关类操作mysql数据库,主要实现增,删,查操作,并解决qt5.12对mysql事务的有些不支持的更改

2020-04-16

空空如也

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

TA关注的人

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