自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 LeetCode 106 从中序与后序遍历序列构造二叉树

根据中序遍历和后序遍历的性质,还原二叉树,详细见注释。

2024-07-03 11:01:32 141

原创 leetcode 162 寻找峰值

解法2:题目要求O(logn),那肯定是二分查找了。直观解法1:遍历 算法复杂度O(n)

2024-07-03 10:12:26 318

原创 力扣1206--跳表

挑战一下hard,果然难搞。

2024-06-18 11:33:37 450

原创 LeetCode[105] 从前序与中序遍历序列构造二叉树

解法2:从注释中应该可以看出来我调试了多少次*_*,思路没打开,主要是进行了vector的拷贝,导致内存占用很大,边界问题也没有搞的很清楚,导致有不少if判断,注释打开的话submit会超时超内存,关闭注释就可通过。,请构造二叉树并返回其根节点。

2024-01-11 15:29:32 561

原创 LeetCode [103] 二叉树的锯齿形层序遍历

ps:刚开始,还在想使用stack,但是发现stack只能压到栈顶,还得需要一个vec辅助进行,难搞,还是算法库好哇!(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

2024-01-10 16:40:36 513

原创 LeetCode[102] [107] 二叉树层序遍历

很早之前的一次面试,要当场手撸层序遍历,没有搞出来。尴尬,一定要一雪前耻!

2024-01-09 17:40:08 426

原创 LeetCode[62] 不同路径

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?

2024-01-05 16:58:19 544

原创 LeetCode[53]最大子数组和

这里有个关键状态转移方程的定义,dp[i] = max(nums[i], nums[i]+dp[i-1],在这道题里了解到了算法里的无后效性,dp[i]表示以nums中第i个元素结尾的和最大的字符串,所以dp[i]分为两种情况,一种是nums[i]单独一个元素成为字符串,或者加上前边的第[i-1]个元素形成的字符串,即nums[i]+dp[i-1],两者中取最大的即为dp[i]=max(nums[i], nums[i]+dp[i-1])是数组中的一个连续部分。

2024-01-05 10:42:09 504

原创 LeetCode[27]移除元素

#include<stdio.h>#include<stdbool.h>#include<string.h>bool isMatch(char * s, char * p){ if(s == NULL || p == NULL) return false; int i = 0; int j = 0; char c1,c2; int len = strlen(s); while(s[i] != '\0...

2024-01-04 11:04:50 471 1

原创 LeetCode [24][25] k个一组反转链表

【代码】LeetCode [24][25] k个一组反转链表。

2024-01-03 10:35:41 433

原创 LeetCode [24] 两两交换链表中的节点

2. 迭代法--难搞。

2023-12-28 17:48:43 526

原创 LeetCode[141] [142] 环形链表I II

对于142需要环的起点,需要找出其中规律,动手画一下,当slow与fast相等的时候,假设slow从head开始走了k步,那么此时fast走了2k步,fast多走的k步是链表环的大小,假设相遇时,环起点与相遇点的距离为n,则head距离环启动的距离为k-n,slow继续往前走,距离环起点的距离也为k-n,所以此时任意一个指针从head开始,每次前进一步,刚好在环起点与slow相遇。从head开始,一个快指针,一次前进两步,一个慢指针,一次走一步。如果没有环,则快指针首先到达链表尾部,

2023-12-27 16:51:44 449

原创 logrotate执行定时执行不生效,踩坑

正常情况回滚压缩都没有问题,但是作为生产环境,偶尔系统会出现故障,要排查某个历史时间点的系统状况,需要解压之前日志,很多时候会直接在/var/log/下直接解压然后查看日志内容。在定时任务中添加一个动作,每次执行回滚任务之前,把所有要回滚的日志文件检查一遍,如果有某个日志文件的*.1存在,就压缩为原来的状态,为了尽量保存日志的完整,把其他解压的后续文件也都压缩为原来的状态*.[序号].gz,保持日志文件的连续性。logrotate是系统自带的日志回滚模块,默认情况配置情况下,没发现什么问题。

2023-11-20 15:35:25 739

原创 LeetCode [23] 合并K个有序链表

前有合并两个有序链表,感觉比较简单,没有认为合并K个升序链表难,其实直观上算法都是比较简单:首先对比每一个链表头部元素,找出最小的,放在目标链表中,更新这个链表头,直到遍历所有链表。主要是一些细节处理上。

2023-08-01 11:29:17 257

原创 LeetCode [86] 分割链表

创建两个链表头,把以target为目标的分到两个链表中。自己想的,不知道读者是否能看懂,参考注释。

2023-07-27 14:50:45 144

原创 C++学习

一、类 C++允许在类里声明常量,但不允许对它进行初始化 class Car{public: const float TANKSIZE = 85;//报错}; 绕开这限制的方法就是创建一个静态常量 class Car{public: static const float TANKSIZE = 85;//报错}; 类的相互赋值 Car car1, car2;...car2 = car1;//默认构造函数? 构造器和通用方法的区别

2023-07-25 16:51:19 107

原创 LeetCode[111] 二叉树的最小深度

类似二叉树的最大深度,最大深度是自顶向下一直遍历,直到找到最底部的节点。最小深度是遍历,找到最近的叶子节点即可。

2023-07-21 14:50:09 95

原创 LeetCode [110] 是否为平衡二叉树

简单题,也可以挺有意思,加深理解。

2023-07-21 10:57:29 68

原创 LeetCode [101] 对称二叉树

好久没有刷力扣了,看看之前刷过的题目,再做一遍有新感觉。

2023-07-20 13:56:53 76

原创 LeetCode [191] 位1的个数

知识点:位运算。

2023-01-05 14:48:29 108

原创 LeetCode [168] Excel表列名称

一个easy题有点意思,记录一下。

2023-01-05 10:59:26 112

原创 LeetCode [988] 从叶结点开始的最小字符串

其实不用把每一次都记下来,再循环比对,维护一个返回的string,遇到节点比对就好了。把所有的路径遍历一下,记录下来,然后比对string。

2022-07-22 15:26:48 185

原创 LeetCode [96] 不同的二叉搜索树

我是先刷了【95】不同的二叉搜索树(4个小时+才ac,我是不是废了),然而96题更简单,只需要不同二叉树的总个数就行,95需要把所有的二叉树都列出来。所以第一种做法就是把95的思路拿过来了。

2022-07-21 16:33:51 1282

原创 pixman安装

问题:源码qemu安装的时候,pixman没有安装,Dependency "pixman-1" not found, tried pkgconfig,记录一下安装的坑。内网环境,无法yum安装pixman,下载了pixman的源码包,解压之后没有configure文件./autogen.sh autoreconf: command not foundyum -y install autoconf automake libtool,可解决上述问题再次./autogen.sh,在源码下找确实没有这个文件,但是c

2022-06-14 09:58:43 2765

原创 shell脚本中while : 相当于while true

可以一直循环step=10while :do off=0 while [ $off -lt 100 ] do echo $off off=$[$off+$step] sleep 1 donedone输出如下,一直循环下去,相当于while true010203040506070809001020304

2022-05-10 10:34:59 788

原创 LeetCode 146 LRU算法-hash+双链表、unorder_map

第二种解法:利用unordered_map本身进行匹配,实验表明,unordered_map是头插法,并且没有rbegin()迭代器,使用end()达不到想要的效果,所以每次删除数据冷的结点,需要遍历整个hash表,到第17个case通过不了。第一种解法:hash+双向链表。

2022-01-08 23:33:43 292

原创 快排qsort

void swap(int a[], int i, int j){ if(i >= j) return; int tmp = a[i]; a[i] = a[j]; a[j] = tmp; return;}void qsort(int a[], int low, int high){ if(low >= high) return; int pos; int p = a[low]; int i = low; int .

2021-12-27 23:20:31 241

转载 反转链表-三个指针

struct node* reverse_linklist(struct node*head){ if(head == NULL || head->next == NULL) return head; struct node* beg = NULL; struct node* mid = head; struct node* end = head->next; while(1) { mid...

2021-12-27 16:45:56 157

原创 二叉树实现

#include<stdio.h>#include<stdlib.h>#define NAMESIZE 32struct score_st{ int id; char name[NAMESIZE]; int math; int chinese;};struct node_st{ struct score_st data; struct node_st *l,*r;};void print_s(struct s...

2021-12-13 20:51:26 3612

原创 荣耀机试题2

#include<stdio.h>#include<stdlib.h>#include<string.h>#define fnum 20 //水果种类struct s{ char f[32]; int w[101];};void sort(int a[], int people){ int i,j; for(i = 0; i < people; i++) for(j = i...

2021-12-12 21:16:10 872

原创 postgreSQL 学习

pg配置:SQL语法简介:

2021-12-04 16:54:40 105

原创 算法宝藏链接

第一章 序章 | LeetCode Cookbook --go语言leetcode实现的算法自学编程一路走来,这些私藏工具和网站我全贡献出来了!

2021-11-26 16:50:13 58

原创 有限状态机编程

头文件relay.h#ifndef _RELAY__H_#define _RELAY__H_#include <stdlib.h>#define JOBMAX 10000enum { STATE_RUNNING = 1, STATE_CANCELD, STATE_OVER};struct relay_stat_st{ int state; int fd1; int fd2; int64_t count12, count21;};// retrurn

2021-11-07 23:44:17 258

原创 pthread学习--使用条件变量实现信号量

在实际开发过程,可能会控制某个模块所使用的资源,同一时刻只允许某个功能使用一定数量的资源。同样是筛质数,同一时刻只允许同时四个线程进行计算,所以需要使用一个信号量进行总资源的控制,代码如下://mysem.h#ifndef _MYSEM_H__#define _MYSEM_H__#include <pthread.h>//extern struct mysem;struct mysem { int val; pthread_mutex_t mutex;

2021-11-05 15:19:49 322

原创 线程学习--pthread--锁链及条件变量

pthread_cond_wait函数的使用,一般跟lock一起用pthread_mutex_lock(&mutex);pthread_cond_wait(&cond,&mutex);等待条件变量满足; 把获得的锁释放掉;(注意:1,2两步是一个原子操作) 当然如果条件满足了,那么就不需要释放锁。所以释放锁这一步和等待条件满足一定是一起执行(指原子操作)。--很重要。 pthread_cond_wait()被唤醒时,它解除阻塞,并且尝试获取锁(不一定拿到锁)。因此,一

2021-11-05 14:43:02 408

原创 线程学习--pthread-筛质数

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>#include <pthread.h>#define LEFT 40000000#define RIGHT 40000200void *primer(void *arg){ int i = (int)arg.

2021-10-27 20:57:44 247

原创 mydeamon--守护进程实例

#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>static int deamonize(void){ pid_t pid = fork(); if(pid < 0) { perror("fork()"); exi.

2021-10-26 22:33:23 156

原创 mysudo--Linux用户权限管理实现

一直对Linux中的u+s权限不是很理解,一起来看看setuid的使用任何用户执行时,都以setuid程序文件所属的用户的身份运行。一般使用场景是,对归属root的程序进行setuid,以便普通用户有root用户的权限。上代码:#include <stdio.h>#include <stdlib.h>#include <wait.h>#include <unistd.h>#include <sys/types.h>in

2021-10-26 17:24:59 209

原创 execvp使用--实现自己的shell

#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <string.h>#include <glob.h>static int parse(char *linebuf, glob_t *glob_res){ char *tok = "a.

2021-10-21 22:04:12 578

原创 fork进程--再次理解全缓冲和行缓冲模式

一个简单的多进程例子:#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t pid; printf("%d:Parent Begin!\n",getpid()); pid = fork(); if(pid < 0) { perror("fork()"); exit(1); }

2021-10-15 14:24:03 177

NFSv3 1813翻译版

NFSv3翻译文档,本人参考1813进行NFSv3基础进行翻译,内容主要包括NFSv3 概况,rpc相关信息,NFSv3与v2不同的地方,NFSv3的程序处理过程,NLM网络锁管理和MNT协议

2020-11-02

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

TA关注的人

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