自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 收藏
  • 关注

原创 leetcode 399除法求值 超水带权并查集

【代码】leetcode 399除法求值 超水带权并查集。

2024-01-18 17:02:39 575 1

原创 康复记录--------

康复记录

2022-06-19 23:57:38 225

原创 内存泄漏及解决

内存泄漏:由于系统问题或程序的某些错误造成未能释放已经不再使用内存的情况。Java循环引用obj.testBlock = ^{ obj.val = xxx;};两个对象之前strong强引用2. Finalizer 引用,GC 已经标记,但是没来及回收3. 全局变量 会一直作为GCRoot 不被回收C++new后不delete、malloc后不free如内核态内存泄漏严重时导致整个操作系统不稳定。常发性内存泄漏。每执行一次就会导致一块内存泄漏偶发性内存泄漏。发生内存

2021-08-28 11:10:54 213

原创 leetcode 486. 预测赢家 dp

题目class Solution {public: bool PredictTheWinner(vector<int>& a) { int n=a.size(),dp[n][n]; for(int i=0;i<n;++i) dp[i][i]=a[i]; for(int i=0;i<n-1;++i) dp[i][i+1]=max(a[i],a[i+1])-min(a[i],a[i+1]); for(i

2021-07-08 14:57:03 156

原创 leetcode 781. 森林中的兔子

题目class Solution {public: int numRabbits(vector<int>& a) { int n=a.size(),ans=0; map<int,int>mp; for(int i=0;i<n;++i){ if(mp[a[i]]==a[i]+1) mp[a[i]]=0; if(!mp[a[i]]) ans+=a[i]+1;

2021-07-07 22:42:06 159

原创 2021-04-20

预编译gcc -E hello.c -o hello.i主要处理源代码文件中以#开始的预编译指令。比如#include、#define将所有的#define删除、并展开所有宏定义处理#include,将包含的文件插入到该预编译指令的位置。(这个过程是递归进行的)删除所有的注释添加行号和文件名标识,以便于编译时编译器产生调试用的行号信息及编译错误或警告时能够显示行号。...

2021-04-20 16:08:19 105

原创 多进程编程

fork、vfork 、exec系列 系统调用fork()、vfork()、__clone()库函数都根据各自需要的参数标志去调用clone(),然后由clone()去调用do_fork().do_fork()调用copy_process(),然后让进程开始运行。copy_process():调用dup_task_struct为新进程创建一个内核栈、thread_info结构、task_struct,这些值与当前进程得值相同。此时子进程和父进程描述符完全相同。检查新创建这个子进程后,当前用户所拥

2021-04-10 13:17:50 137

原创 leetcode 160. 相交链表 唔~

题目class Solution {public: ListNode *getIntersectionNode(ListNode *x, ListNode *y) { if(!x||!y) return NULL; ListNode *xx=x,*yy=y; while(xx!=yy){ xx=(xx?xx->next:y); yy=(yy?yy->next:x); }

2021-04-03 01:40:07 108

原创 leetcode 143. 重排链表 123456变成162534

快慢指针找到中间节点后,后一半反转 然后交叉合并。。class Solution {public: ListNode* getmid(ListNode *head){ ListNode *slow,*fast; slow=fast=head; while(fast&&fast->next) fast=fast->next->next,slow=slow->next; return slow;.

2021-04-03 00:40:05 504

原创 leetcode 42. 接雨水 找到后面第一个大于他的找不到就找后面最大的 扫一遍就行。。

题目class Solution {public: int trap(vector<int>& a) { if(a.size()<=1) return 0; int n=a.size(),mx[n],sum[n]; int val=a[n-1],dex=n-1; for(int i=0;i<n;++i) sum[i]=i?(sum[i-1]+a[i]):a[i]; for(int i

2021-04-02 00:50:36 105

原创 硬件相关qq

L3:多核共享内存:多CPU共享快表存在寄存器中。CPU寻找页面的过程:a. 通过虚拟地址获取物理地址b. 根据物理地址获取数据获取物理地址CPU向MMU发送虚拟地址。MMU通过快表查找其物理地址,不命中则通过cache和内存中查找,(如果内存存放的是多级页表的话,还可能在硬盘) 依次查找页表项。将查询的页表项记录到高速缓存中。如果虚拟地址已经分配物理页框,得到了物理地址,并更新快表。接下来进入由MMU根据物理地址获取的数据的步骤。(b)如果虚拟地址没有分配物理页框,触发缺页中断,.

2021-03-07 15:34:11 96

原创 ?海量数据?问题排查?

100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数? 第K大?内存足够: 直接快排查找第K大内存不足: 将100亿个整数分成几个文件存到硬盘里。以高位当桶(24~31),以此处理每个文件,将每个文件写到对应桶的文件(比如程序中 到达一定的数量之后就执行写磁盘操作)。我们根据这256个桶的数的个数,来得到中位数再哪个桶?,这样就变成了求这个桶文件的第K大,我们可以继续将这个文件分成好几个文件,然后以(16~ 23)当桶,这些桶里面(24~ 31)位都是一样的,只需比较(16~23)就可以.

2021-03-03 16:46:35 204 1

原创 几何题

判断一个点是否在封闭图形里边,封闭图形所有点坐标都给出,说思路这个查了下有个专门的算法 https://www.zhihu.com/question/26551754任一射线穿过多边形,奇数个交点则位于多边形之内,偶数个交点则位于多边形之外...

2021-03-03 15:35:39 143 1

原创 leetcode 189. 旋转数组 gcd/旋转 模拟

题目class Solution {public: void reverse(vector<int>&a,int i,int j){ cout<<i<<" "<<j<<endl; while(i<j) swap(a[i],a[j]),++i,--j; } void rotate(vector<int>& a, int k) { int n

2021-03-03 15:14:17 137 1

原创 杨氏矩阵第K小/查找目标数字

leetcode 378. 有序矩阵中第 K 小的元素class Solution {#define ll long longpublic: int cal(int mid,vector<vector<int>>&ma){ int n=ma.size(),i=n-1,j=0,res=0; while(i>=0&&j<n){ if(ma[i][j]<=mid) res+=i

2021-03-03 14:04:06 179

原创 leetcode 54. 螺旋矩阵

题目class Solution {public: vector<int> spiralOrder(vector<vector<int>>& ma) { if(!ma.size()||!ma[0].size()) return {}; int n=ma.size(),m=ma[0].size(); vector<int>ans; int l=0,r=m-1,up=0,dow

2021-03-02 22:46:00 77

原创 leetcode 460. LFU 缓存

题目class LFUCache {public: struct Node{ int key,val,t; Node(int _key,int _val,int _t):key(_key),val(_val),t(_t){} }; typedef list<Node>::iterator It; int mint,capacity,sz; map<int,list<Node>>mp; m

2021-03-02 16:35:47 97

原创 面试题 01.07. 旋转矩阵 先折半交换 后对角线交换

题目class Solution {public: void rotate(vector<vector<int>>& a) { int n=a.size(); for(int i=0;i<n/2;++i) for(int j=0;j<n;++j) swap(a[i][j],a[n-i-1][j]); for(int i=0;

2021-02-24 01:27:39 153

原创 字典序最小的最长递增子序列 logn

题目class Solution {public: vector<int> LIS(vector<int>& a) { int n=a.size(),d[n+1],tmp[n]; int len=0; if(n) d[++len]=a[0],tmp[0]=1; for(int i=1;i<n;++i){ if(a[i]>d[len]) d[++len]=a[i],

2021-02-23 15:53:11 545

原创 Linux信号

信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。Linux信号可由如下条件产生:对于前台进程,用于可以通过输入特殊的终端字符来给他发送信号。如输入Ctrl+C.系统异常。如浮点异常和非法内存段访问.系统状态变化。比如alarm定时器到期引起的SIGALRM信号。运行kill命令或调用kill函数.fork产生的子进程的进程表项(复制的父进程的),信号位图会被清除(原进程设置的信号处理函数不再对新进程起作用),子进程继承父进的信号掩码,但具有一个空的挂起

2021-02-21 20:31:40 225 2

原创 高级I/O函数

pipe、socketpair#include<unistd.h>int pipe(int fd[2]);要想实现双向的数据传输,应该使用两个管道。管道内部传输的数据时字节流,这和TCP字节流的概念相同。但TCP写入多少字节的数据决定对方的接受窗口和拥塞窗口,而管道本身有一个容量限制,默认是65536字节。我们可以使用fcntl函数来修改管道容量。#include<sys/types.h>#include<sys/socket.h>int socketpa

2021-02-21 17:50:55 138

原创 Linux网络编程基础API

创建socket#include<sys/types.h>#include<socket.h>int socket(int domain,int type,int protocol);domain:告诉系统使用哪个底层协议族,对于TCP/IP而言,参数应该设置为PF_INET(用于IPv4)或PF_INET6(用于IPv6);对于UNIX本地域协议族而言,参数应该设置为PF-UNIX。type:指定服务类型。服务类型主要有SOCK_STREAM服务(流服务)和SOCK_

2021-02-21 14:29:26 114

原创 leetcode 1438. 绝对差不超过限制的最长连续子数组 (尺取+单调队列维护窗口最大最小值 直接秒)

题目参考 剑指 Offer 59 - IIclass Solution {public: #define N 100005 #define INF 0x3f3f3f3f int q1[N],head1=1,tail1=0; int q2[N],head2=1,tail2=0; void push(int x){ while(head1<=tail1&&q1[tail1]<x) --tail1; q1[

2021-02-21 00:48:40 130

原创 64匹马,8个赛道,最少比几次找出跑得最快的4匹马

首先8个一组,选出最快的4个。这4个分别是每一组的第一名。这4个可能被其他分组的第二名超过。所以这4个和这4个分组的第二名再比较一次。假如还是这四个比较快 那就是答案了。比较8+1次就能得到。假如被代替了一个分组,(A的第一名被D的第二名代替),说明BC的第二名打不过D的第二名。只需要D的第三名、第四名和BC的第一名比较一下即可。比较8+1+1次就能得到。假如被代替了2个分组,(A和B的第一名被C和D的第二名代替),比较8+1次就能得到。...

2021-02-21 00:10:57 579

原创 leetcode 15. 三数之和 / 两数之和的情况种数

题目class Solution {public: vector<vector<int>>ans; void solve(int x,int y,int z){ vector<int>tmp; tmp.push_back(x),tmp.push_back(y),tmp.push_back(z); ans.push_back(tmp); } vector<vector<int&

2021-02-20 23:34:14 110

原创 求1+2+...+n 不能用*/、while、for、if else、switch case 条件判断语句

题目class Solution {public: int cal(int n,int& sum){ n&&cal(n-1,sum); return sum+=n; } int Sum_Solution(int n) { int sum=0; return cal(n,sum); }};class A{public: static int n,sum; A()

2021-02-20 00:10:42 83

原创 c++ 面试

staticc/c++共有:静态局部变量:变量不随函数终止而消亡。静态全局变量:该变量只在本文可见。静态函数:该函数只在本文可见。c++特有:静态数据成员:存储在全局数据区,要在类外定义。假如是const static 可以在类内。静态成员函数: 不能访问非静态成员函数和非静态数据成员。const指针和引用未定义行为...

2021-02-19 18:09:05 82

原创 c++11新特性

文章目录右值引用右值引用????c++11之前:右值不能被引用,最大限度就是用常量引用绑定一个右值。const int& a=1;这种情况下右值不能被修改。c++11之后:右值可以被修改,编译器为(四声) 非 常右值 参数调用:(A&& x)或(const A&& x)或(const A& x)编译器为 常右值 参数调用:(const A&& x)或(const A& x)以上分别是调用顺序。#include&l

2021-02-19 13:32:10 96 1

原创 leetcode 995. K 连续位的最小翻转次数 (思维)

题目class Solution {public: int minKBitFlips(vector<int>& a, int K) { int n=a.size(); int q[n+1],head=1,tail=0,ans=0;//队列里面放进入i代表 i~i+k-1有一次翻转 for(int i=0;i<n;++i){ while(head<=tail&&q[head]+

2021-02-18 19:21:59 113

原创 malloc、new

malloc()函数原理????c核心库维护一个堆的空闲链表,每次调用malloc()时从链表找到一个可以满足用户请求的内存块,并分成两块,一块大小是请求大小 给用户用,剩余的一块放到链表上。堆管理器会定时的尝试合并相邻堆单元。当空闲链表没有可以满足用户要求的块时,malloc调用brk或sbrk系统调用向操作系统请求更多的内存页。一些优化:对于较大的内存分配,堆管理器可能会直接向OS申请完整的内存页面。可以指定最小分配大小,以防止出现大量碎片。堆可以将自己划分成两个区域,一个用于较小的分配,

2021-02-17 19:54:24 85

原创 leetcode 128. 最长连续序列 (思维?)

class Solution {public: int longestConsecutive(vector<int>& nums) { int n=nums.size(),*vis=new int[n]; map<int,int>mp; for(int i=0;i<n;++i){ if(!mp.count(nums[i])) mp[nums[i]]=i,vis[i]=0; ..

2021-02-16 22:37:07 86

原创 std::call_once()的实现

std::call_once()的部分源码pthread_cond_wait()为何先加锁后解锁又加锁看完就会对pthread_cond_wait()和pthread_cond_broadcast()有了更好的理解。#include<bits/stdc++.h>#include<windows.h>class once_flag{public: once_flag()noexcept:state(0){} friend void call_once(onc

2021-02-16 22:25:09 611

原创 leetcode 491. 递增子序列 (找出所有递增子序列 输出 并不能重复 dfs回溯)

题目class Solution {public: int n; vector<vector<int> >ans; vector<int>tmp; void dfs(vector<int>&a,int pos){ map<int,int>mp; for(int i=pos;i<n;++i){ if(!mp[a[i]]&&(!t

2021-02-14 21:50:39 194

原创 leetcode 765. 情侣牵手(模拟,从左往右便利,只要不成对就交换)

题目模拟,只要发现右边不是自己的爱人,就让别人和爱人换一下位置。。class Solution {public: int getlove(int x){return (x&1)?(x-1):(x+1);} int minSwapsCouples(vector<int>& a) { int n=a.size(),vis[n],ans=0; for(int i=0;i<n;++i) vis[a[i]]=i;

2021-02-14 00:59:19 242

原创 一些简单的几何。。

593. 有效的正方形枚举所有情况,然后四条边相等,且对角线相等不为0. 其实所有情况只有3中哈哈。注意这种情况:[0,0][1,1][0,0][0,1]dis(p1,p2)=dis(p2,p3)=dis(p3,p4)=dis(p4,p1)=2,。。 但不是正方形。class Solution {public: int dis(vector<int>&p1,vector<int>&p2){ return (p1[0]-p2[

2021-02-12 15:19:54 116

原创 leetcode 25. K 个一组翻转链表

题目class Solution {public: ListNode* cal(ListNode* head,int K){ ListNode *now=head->next,*nex=now->next,*nexnex;int cnt=0,flag=0; while(nex&&++cnt<K) nexnex=nex->next,nex->next=now,now=nex,nex=nexnex,flag|=(cnt=

2021-02-12 13:09:20 101

原创 leetcode 146. LRU 缓存机制

题目Node要存储key,因为要删除tail时,也需要从map里面删除,然后删除的时候需要ket,所以tail节点里面要含有tail对应的key。别忘了 remove(now)时更新相应的head,tail。class LRUCache {public: class Node{ public: Node(int key,int val){this->key=key,this->val=val,this->pre=NULL,this->nex=

2021-02-12 01:19:36 96

原创 leetcode 992. K 个不同整数的子数组 (求有多少个区间满足不同数个数为K 简单)

题目算不上尺取吧,看一眼就会了。class Solution {public: int subarraysWithKDistinct(vector<int>& a, int K) { int n=a.size(),vis[n+1],las[n]; memset(vis,0,sizeof vis); vis[a[n-1]]=n-1; for(int i=n-2;i>=0;--i){

2021-02-10 17:04:13 177

原创 leetcode 665. 非递减数列 水题

题目a[i]比a[i+1]大,可以选择让a[i]变小,让a[i+1]变大。[3,4,2,3] 这个我们选择让4变小,4要<=2,4还要>=3,所以不可以,,a[i+1]>=a[i-1]才可以。[5,7,1,6] 这个我们选择让1变大,1要>=7,1还要<=6,所以不可以,,a[i+2]>=a[i]才可以。class Solution {public: bool checkPossibility(vector<int>& a) {

2021-02-07 01:37:27 95

原创 leetcode 319. 灯泡开关 672. 灯泡开关 Ⅱ

题目题意: 第一轮所有灯都亮着,第二轮关掉按下第2、4、6、8…个开关,第三轮按下第3、6、9…个开关,第四轮第五轮等等都是这样。思路: 一个灯是不是还亮着,要看经过的轮数是不是偶数个(第一轮不算)。比如第4个灯,在第2、4轮被按下开关。比如第6个灯,在第2、3、6轮被按下开关。比如第12个灯,在第2、3、4、6、12被按下开关。比如第36个灯,在第2、3、4、6、9、12、18、36被按下开关。就是一个数有因子奇数个因子(1不算、本身不算)就可以亮灯。那不就是平方数吗,因子都是亮亮成对的,

2021-02-07 01:23:36 166

空空如也

空空如也

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

TA关注的人

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