
C++
爱学习的人啊
这个作者很懒,什么都没留下…
展开
-
epoll中水平触发和边缘触发的区别
Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读写完(如读写缓冲区太小),那么下次调用 epoll_wait()时,它还会通知你在上没读写完的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你!!!如果系统中有大量你不需要读写的就绪文件描述符,而它们每次都会返回,这样会大大降低处理程序检索自己关心的就绪文件描述符的效率!!!Edge_triggered(边缘触发):当被监控的文件描述原创 2020-05-08 17:34:37 · 1971 阅读 · 1 评论 -
windows网络编程学习
1.在编译采用WINSOCK2.h的应用程序时,需链接到WS2_32.LIB库.#pragma comment(lib,"ws2_32.lib")通过WSAStartup函数加载WinSock库int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)/*wVersionRequested 参数用于指定准备加载的WinSock...原创 2020-02-29 18:00:21 · 363 阅读 · 0 评论 -
LeetCode992 K个不同整数的子数组
这思路非常好啊,可是想不到啊class Solution {public: int subarraysWithKDistinct(vector<int>& A, int K) { if(A.size()==0 ||K==0) return 0; int l=0 ,r=0; unordered_map<int,int> um;//...原创 2020-02-22 19:33:42 · 232 阅读 · 0 评论 -
LeetCode.306累计数
这道题感觉好烦,,class Solution {public: bool valid(int start, int i, int j, string num) { string a=num.substr(start,i); string b=num.substr(start+i,j); if((a[0]=='0' &&...原创 2020-01-16 16:32:34 · 145 阅读 · 0 评论 -
32位无符号整型
无符号的0x80000000==-2147483648(有符号整型的最小值)如果现在对有符号整型的最小值取abs的话就会超过32位int的最大值范围这个时候就可以用0x80000000代替取abs之后的值...原创 2019-12-30 19:55:02 · 5497 阅读 · 0 评论 -
LeetCode 5294. 你能从盒子里获得的最大糖果数
LeetCode周赛题第四题hard难度,但是感觉比前面两道还简单。。。class Solution {public: int maxCandies(vector<int>& status, vector<int>& candies, vector<vector<int>>& keys, vector<vec...原创 2019-12-22 21:45:05 · 205 阅读 · 0 评论 -
LeetCode 212单词搜索2
C++,字典树+DFS首先需要知道字典树的构建,插入,查找和前缀;再就是DFS。这种有字典树+棋盘的DFS就头晕!!!class Trie{ public: bool is_str=false; Trie* next[26]={NULL}; Trie(){} void insert(string s) { Trie *root=this...原创 2019-12-21 15:33:30 · 117 阅读 · 0 评论 -
LeetCode76最下覆盖子串
这道题也是字符串和sliding window的题目,多了hash的步骤。。以这个为模板可以连续AC掉,LeetCode438,LeetCode567。struct res{ int begin=0,end=0,chang=INT_MAX;};class Solution {public: string minWindow(string s, string t) { ...原创 2019-12-20 15:08:00 · 114 阅读 · 0 评论 -
LeetCode5285. 元素和小于等于阈值的正方形的最大边长
哎,,感觉好难啊,,,没有想到这么做用一个sum去加这样不会超时,如果先分块儿再用一个sum去存和的话,会超时,重复计算的太多了。。。class Solution { public: int maxSideLength(vector<vector<int>>& mat, int threshold) { for (int i = 0;...原创 2019-12-15 15:11:21 · 160 阅读 · 0 评论 -
LeetCode 424. 替换后的最长重复字符
滑动窗口问题;为以后这样的题当做一个模板思路吧。。。class Solution {public: int characterReplacement(string s, int k) { unordered_map<char,int> um; int left=0,right=0;//窗口的左右两边 int count=0,res=0;//coun...原创 2019-12-10 16:43:14 · 274 阅读 · 0 评论 -
LeetCode1284 转化为全零矩阵的最少反转次数(超详细!!!)
在目前阶段,是自己认为比较难的BFS了;包括了状态压缩(主要为了方便存矩阵状态),位运算再加上广搜。第一次接触这样的思路,记录一下。。。(具体的题目可以上LeetCode上面做一下)class Solution {public: int x[5]={0,0,0,-1,1}; int y[5]={0,-1,1,0,0}; int trans(vector<ve...原创 2019-12-10 14:16:16 · 373 阅读 · 0 评论 -
C++ 侯捷视频学习(草稿)
原创 2019-12-10 10:46:08 · 1397 阅读 · 0 评论 -
LeetCode 抽屉原理(鸽笼)相关题目442和448
442.数组中重复的元素利用为了不引入额外空间,异或实现交换。class Solution {public: void yihuo(vector<int>& nums,int i, int j) { if(i == j) return; nums[i] = nums[i]^nums[j]; nums[j] =...原创 2019-12-03 21:54:07 · 445 阅读 · 0 评论 -
C++ 多线程学习入门2
example5 和example6的写法,后者的运行时间要比前者快;在CPU进行运算时会把result的数组中的数组抄送到缓存中,这样每次两个线程会分别的对result[0]和result[1]抄送的值进行加 1操作,但是等到缓存向内存中写值的时候会出现其中一个与一开始抄送的值并且本线程没有改变的那个值(被另一个线程改变了)不一致,这时候会将新的值(被另一个线程改变的值)再次抄送到本线程所在C...原创 2019-11-28 16:50:10 · 110 阅读 · 0 评论 -
C++ 多线程学习入门1
#include<iostream>#include<thread>using namespace std;typedef struct{int first;int last;int result;}MY_ARGS;int main(){int arr[5000];MY_ARGS args1={0,2500,0};MY_ARGS args2={2500...原创 2019-11-28 15:57:46 · 100 阅读 · 0 评论 -
LeetCode743--网络延迟问题
思路就是迪杰斯特拉最短路径问题class Solution {public: int res; void djs(vector<vector<int>>& node,int k,vector<int>& visit) { int N=node.size(); visit[k]=1;...原创 2019-11-23 15:48:22 · 150 阅读 · 0 评论 -
Qt添加资源文件无法显示资源文件问题
在添加资源文件以后需要再qmake一遍,再run才行。。。亲身经历!!!void Widget::paintEvent(QPaintEvent *){ gridw = width()/10; gridh = height()/10; startx = gridw; starty = gridh; QPainter p(this); p.dra...原创 2019-11-21 20:59:09 · 3731 阅读 · 0 评论 -
Qt5学习 绘图设备和文件系统
绘图设备:QPixmap:针对屏幕进行优化了,和平台相关,不能对图片进行修改QImage:和平台无关,可以对图片进行修改,在线程中绘图QPicture:保存绘图的状态(二进制文件)文件读写:void Widget::on_readButton_clicked(){ QString path = QFileDialog::getOpenFileName(this,"open","...原创 2019-11-17 17:31:13 · 138 阅读 · 0 评论 -
Qt5学习 事件过滤器
事件过滤器和被安装过滤器的组件必须在同一线程,否则,过滤器将不起作用。另外,如果在安装过滤器之后,这两个组件到了不同的线程,那么,只有等到二者重新回到同一线程的时候过滤器才会有效。//在myWidget.h文件中保护类型下 bool eventFilter(QObject *obj,QEvent *e);//在myWidget.cpp//在构造函数中安装过滤器ui->label-&...原创 2019-11-13 22:30:42 · 145 阅读 · 0 评论 -
Qt5学习 事件的接受和忽略
信号的接收和忽略一般用在点击窗口的关闭按钮时,弹出问题对话框,默认是Yes和No,Yes就接收No就忽略当信号忽略时传递给父组件(不是父类)void myWidget::closeEvent(QCloseEvent *e){ int ret=QMessageBox::question(this,"question","是否关闭"); if(ret == QMessageBox::...原创 2019-11-13 17:11:18 · 189 阅读 · 0 评论 -
Qt学习 文本框输入有提示
# include <QCompleter># include <QStringList>QStringList list;list<<"hello"<<"How are you"<<" hehe";//相当于cinQCompleter *com = new QCompleter(list,this);com->setCa...原创 2019-11-13 11:09:56 · 1470 阅读 · 0 评论 -
Qt学习 模态和非模态对话框创建和标准对话框、文件对话框
QMenuBar *mBar = menuBar();setMenuBar(mBar);//设定菜单栏QMenu *menu = mBar->addMenu("对话框");QAction *p1=menu->addAction("模态对话框");connect(p1,&QAction::triggered, [=]() { Q...原创 2019-11-12 11:37:18 · 219 阅读 · 0 评论 -
Qt学习 Lamda表达式和信号功能
QPushButton *b=new QPushButton(this) //this是指定这个类为父对象用一般信号和槽函数:connect(b, &QPushButton::released,this,&myWidght::close)在使用Lamda表达式时,需要在项目文件.pro中加上CONFIG += C++11用Lamda表达式来作为槽函数:connec...原创 2019-11-11 10:38:29 · 446 阅读 · 1 评论 -
Leetcode-516:最长回文子序列
记录,为了方便后续的学习class Solution { public int longestPalindromeSubseq(String s) { int len = s.length(); int[][] dp = new int[len][len]; for(int i=0;i<len;i++){ ...原创 2019-10-21 22:18:35 · 123 阅读 · 0 评论 -
字典树(trie树)
关于字典树的插入和查找操作#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int MAX_NODE = 1000000 + 10;const int CHARSET = 26;int trie[MAX_NODE][CHARSET] = {0};...原创 2019-10-21 22:08:27 · 131 阅读 · 0 评论 -
马拉车算法(解决回文串问题)
https://www.jianshu.com/p/392172762e55这里我只把代码拿过来是为了后面看,要是想看详细的原理解释异步上面链接public static String Manacher(String s) { if (s.length() < 2) { return s; } // 第一步:预处理,将原字符串转换为新字符串 ...原创 2019-10-21 21:39:23 · 338 阅读 · 0 评论 -
图算法之匈牙利算法(寻找最大匹配)
本文讲述的是匈牙利算法,即图论中寻找最大匹配的算法,暂不考虑加权的最大匹配(用KM算法实现),文章整体结构如下:1.基础概念介绍二分图又称作二部图,是图论中的一种特殊模型。设G=(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的子集X和Y,并且图中每条边连接的两个顶点一个在X中,另一个在Y中,则称图G为二分图。二分图匹配给定一个二分图G,在G的一个子图M中,M的边集{E}中的...原创 2019-09-20 13:34:19 · 1439 阅读 · 0 评论 -
LeetCode401二进制手表 总结C++统计整数中的“1”的个数方法
#include<iostream>#include<vector>#include<set>using namespace std;int main(){ int n,m; int res = 0; cin >> n >> m; while (n != 0) { n = n & (n - 1); ...原创 2019-08-20 15:21:24 · 279 阅读 · 0 评论 -
LeetCode 96之卡特兰数
96不同的二叉搜索树最近看到卡特兰数所以就拿LeetCode上一道题来练练,加强一下对卡特兰数的理解,但是这道题是卡特兰数最基本的n^2的推导。什么是卡特兰数呢?卡特兰数满足以下性质:令h(0)=1,h(1)=1,catalan数满足递推式。h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)h(0) (n>=2)。也就是说,如果能把公式化成上面这种形...原创 2019-08-19 16:00:46 · 1041 阅读 · 0 评论