自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于RegOpenKey()函数调用注册表返回值为2的问题及其解决办法

由于要访问注册表的安装目录的路径的数值调用RegOpenKey()函数返回值为2 百度了好久都没找到合适的解决办法 最终发现是权限不够只要把该项目弄成管理员权限即可解决此问题

2021-03-18 10:36:39 834

原创 git一些基本操作

查看本地分支命令git branch查看远程分支git branch -r查看所有分支git branch -a创建本地分支git branch 分支名切换到新创建的分支git checkout 分支名将新建分支上传到github上git push origin 分支名git 初始化git init //本地创建一个git仓git add . 点和add之间有一个空格把本地文件交给git管理git status 查看文件状态 红色表示更改的,绿色表示暂存区git commi

2021-03-02 19:28:18 165

原创 leetcode 水位上升的泳池中游泳

在一个 N x N 的坐标方格 grid 中,每一个方格的值 grid[i][j] 表示在位置 (i,j) 的平台高度。现在开始下雨了。当时间为 t 时,此时雨水导致水池中任意位置的水位为 t 。你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。假定你可以瞬间移动无限距离,也就是默认在方格内部游动是不耗时的。当然,在你游泳的时候你必须待在坐标方格里面。你从坐标方格的左上平台 (0,0) 出发。最少耗时多久你才能到达坐标方格的右下平台 (N-1, N-1)?题解题解

2021-01-30 20:37:47 223

原创 leetcode最小体力消耗路径

你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意下标从 0 开始编号)。你每次可以往 上,下,左,右 四个方向之一移动,你想要找到耗费 体力 最小的一条路径。一条路径耗费的 体力值 是路径上相邻格子之间 高度差绝对值 的 最大值 决定的。请你返回从左上角走到右下角的

2021-01-29 15:34:54 175

原创 leetcode用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )题解首先队列是先进先出的 而栈贼是后进先出的 比如一个队列进入23456 然后实现deleteHead操作首先删除的是2 然后栈的话只能取栈顶而不能直接取栈底部,所以我们可以利用栈后进先出的特性来解决这个问题用两个栈来实现..首先第一个栈和第二个栈存的相反第一个栈的顺序和队列存的

2021-01-27 16:09:20 110

原创 leetcode 单词拆分

给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。简要题解题意就是询问字符串s是否可以完全被wordDict使用如果可以即返回真我们用dp记录一下改单词是否被使用过了要是从头到尾都被使用过了因为u我们设置了第0为dp值为0所以class Solution {public: bool wordBreak(string s, vector&

2021-01-07 15:14:19 94

原创 leetcode 省份数量

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。简要题解显然可以看出这是一个并查集的模板

2021-01-07 12:56:14 257 2

原创 leetcode 之最短回文串

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。###题解有马拉车和kmp的解法 博主因为太久没写马拉车算法忘记了马拉车算法 所以直接使用kmp算法来解决本质就是求文本串正序和逆序的最长公共子串长度,其实就是kmp的next数组的求法 所以我们先将串逆置然后添入当前串之后就是寻求新的文本串的循环节长度了。具体实习代码如下class Solution {public: string shortestPalindrome(strin

2021-01-05 21:33:48 238

原创 leetcode 830较大的分组的位置

在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大分组 。找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,

2021-01-05 18:36:29 63

原创 状压DP入门

洛谷题号p1896在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。题解:首先暴搜可肯定是超时的所以我门考虑状压 因为每个数都可以用二进制表示出来 二进制中01可以表示当前行放的棋子的位置 ,以及个数 首先我们定义一个dp数组dp[i][j][x]表示第i行放的是j的二进制位数的形式前i一共放了x个。首先我们定义一个数组判断当前行是否合法 首先我们引入&操作 这个操作表示两个数二进制相互&a

2021-01-05 18:20:00 146

原创 leetcode之链表中下一个更大的节点

给出一个以头节点 head 作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, … 。每个节点都可能有下一个更大值(next larger value):对于 node_i,如果其 next_larger(node_i) 是 node_j.val,那么就有 j > i 且 node_j.val > node_i.val,而 j 是可能的选项...

2020-04-24 21:47:24 276

原创 Lettcode之 二叉树的最近公共祖先

简要题解:递归解法找到两个节点分别是在左子树还是在右子树中 要是分别在左右子树中根节点即为最近公共祖先要是都在左子树即是递归返回来左节点为最近公共祖先节点,要是都在右子树跟其一致。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...

2020-04-24 21:07:21 82

原创 leetcode之数组的逆序对

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数简要题解:利用归并排序求逆序对即可;在合并数组的时候 当右边的数组大于左边的数组的时候答案就加上左边还未进行比较的数组个数即可mid-i+1.简要代码如下:class Solution {public: vector<int>tem; ...

2020-04-24 10:54:40 231

原创 leetcode之删除排序链表中的重复元素 II

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。简要题解:设置双指针遍历一整个链表遇到重复的就把当前节点接到下一个节点。当前节点位置不变以防下一段还遇到重复的。主要代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListN...

2020-04-23 11:31:03 121

原创 leetcode之平衡二叉树

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树简要题解dfs遍历左右子树的深度判断一下即可主要代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...

2020-04-23 11:04:23 95

原创 leetcode之硬币

硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007简要题解:完全背包简单题,枚举币值,统计次数即可。主要代码如下class Solution {public: int mod=1000000007; int waysToChange(int n) { int a[]={1,...

2020-04-23 10:29:01 729 2

原创 基于TCP的socket编程

socket函数connect 函数TCP客户用connect函数来建立TCP服务器的连接bind函数bind函数把一个本地地址赋予一个套接字listen函数listen函数仅由TCP服务器调用,它做两件事当socket函数创建一个套接字时,它被假设为一个主动套接字,listen函数把一个未连接的套接字转换成一个被动套接字。本函数第二个参数规定了内核应该为相应的套接字排队的最...

2020-04-22 20:54:45 294

原创 套接字编程简介

IPv4套接字地址结构通常也称为"网际套接字地址结构",它以sockaddr_in 命名。定义在<netiont/in.h>头文件中。如下图长度字段sin_len是为增加对OSI协议的支持而随4.3BSD-Reno添加的。正因为有了长度字段,才简化了长度可变套接字地址结构的处理。以下类型都在头文件<sys/socket.h>中sa_family_t 套接字地址结构的地...

2020-04-22 20:04:21 621

原创 leetcode之剪绳子||

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。简要题解当n大于4的时候每段绳子尽量剪成3 要是不能被3整除倒数第二段和倒数第一段的绳...

2020-04-22 10:48:12 184

原创 leetcode之 从链表中删去总和值为零的连续节点

给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止。删除完毕后,请你返回最终结果链表的头节点。简要题解;暴力遍历每一段然后当前段为0的话就把段头指针指向段尾的下一个节点。代码如下:/** * Definition for singly-linked list. * struct ListNode { * ...

2020-04-22 10:21:43 146

原创 leetcode之二叉树右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值简要题解:二叉树进行层序遍历 输出每层最后一个节点即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;...

2020-04-22 09:49:26 122

原创 流量控制传输协议 SCTP

SCTP在客户和服务器之间提供管理,并像TCP那样给应用提供可靠性,排序,流量控制以及全双工的数据传送,SCTP支持多宿而涉及不止两个地址。 SCTP是面向消息的。提供各个记录的按序递送服务。与UDP一样。由发送端写入的每条记录的长度随数据一道传递给接收端。同时SCTP不会因为一个消息的丢失阻塞统同一关联其他流上消息的投递。SCTP提供多宿性,使得单个SCTP端点能够支持多个ip地址。增强应对网...

2020-04-21 23:18:14 461

原创 define和const的区别

c语言中用#define伪命令定义的对象称为常数,用const限定词定义并初始化的称为常量,常数的值在编译时确定,常量的值则在运行时初始化后确定。参考:unix网络编程...

2020-04-21 20:38:58 215

原创 leetcode之重排链表

给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。简要题解:定义一个vector然后把链表插入后直接根据vector操作即可简要代码如下:/** * Definition for singly-linked list. * struct ListNod...

2020-04-21 10:25:20 126

原创 leetcode之树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。简要题解:首先判空只要两颗树判空处理只要为空,只要有一颗树为空时即返回空处理。然后dfs遍历两颗子树,分别对(A,B)(A-left,B)(A->right,B)判断只要有一个满足即为为真。主要代码如下:/** * Definition for ...

2020-04-21 09:32:54 150

原创 leetcode之统计优美子数组

给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。简要题解首先我们遍历一遍数组,为奇设为1不为奇设为0;之后记录一下之前缀和出现的次数和前缀和的大小 然后答案即为当前前缀和大小-k的数值出现的次数和相加即可。主要代码如下:class Solution {public:...

2020-04-21 09:19:01 138

原创 leetcode之LRU缓存

设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值),并在初始化时指定最大容量。当缓存被填满时,它应该删除最近最少使用的项目。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(ke...

2020-04-20 19:53:50 166

原创 内存管理

虚拟内存虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的...

2020-04-20 16:19:38 116

原创 静态库和动态库

静态库和动态库最本质的区别,该库是否被编译进去目标内部静态库(.a,.lib)静态库在编译时会直接整合到目标程序中,利用静态函数库编译成的文件会比较大,这类库函数最大优点是编译成可执行文件时可独立运行。动态库(.so,.dll)动态库在编译时,在程序只有一个"指向的位置",只有当执行文件执行需要使用到该库时,程序才会前去读取库函数来使用。...

2020-04-20 14:37:23 99

原创 leetcode之分隔链表

给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。简要题解先计算出链表的长度,然后把求出每段链表分配的平均值,之后再算出没剩余...

2020-04-20 13:27:56 144

原创 leetcode之重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。简要题解:我们可以根据前序遍历和中序遍历的特点判断出每个节点的左子树和右子树然后递归解决。主要代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * Tre...

2020-04-20 13:14:58 113

原创 leetcode之岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。简要题解:遍历一下所有的岛屿遇到1的地方即从这个地方开始搜索 找到1的地方即设为0,然后遍历完整个数组即可。主要代码如下:class Solution {public: in...

2020-04-20 11:00:52 163

原创 死锁

产生的必要条件互斥: 每个资源要么已经分配给了一个进程,要么就是可用的。占有和等待:已经得到了某个资源的进程可以再请求新的资源不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。环路等待: 有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。处理死锁的方法1.预防死锁。该方法通过设置某些限制条件,去破坏产生死锁四个必...

2020-04-19 22:05:03 116

原创 进程调度算法

批处理系统在OS中调度算法主要是为了保证吞吐量和周转时间作业和作业步1作业作业是一个比程序更为广泛的的概念,不仅包含了通常的程序和数据,而且还应配有一份作业说明书,在批处理系统中,是以作业为基本单位从外存调入内存的2作业步在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果,我们把其中的每一个加工步骤称为一个作业步。作业控制块在多批道处理系统中,为...

2020-04-19 21:24:54 249

原创 手写堆排序

堆排序是一个不稳定排序但是其最好最坏的时间复杂度为nlogn。所谓的堆其实就是一个完全二叉树的结构其主要特点是所有的子树中父节点一定大于子节点。堆排的主要思想是将序列构造成一个大顶堆,堆顶一定是整个序列中最大值然后将最大值与最后一个数值交换,之后又将剩下的n-1个元素构造成一个大顶堆之后在依次向与之前的数值进行操作。其主要代码实现如下:void heapify(int tree[],int ...

2020-04-19 17:06:57 142

原创 leetcode之矩阵中的路径

矩阵中的路径请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“...

2020-04-19 14:42:41 146

原创 leetcode之链表求和

给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。简要题解直接相加即可; 代码如下/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...

2020-04-19 14:13:22 337

原创 leetocde之二叉树层序遍历II

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)解法更二叉树层序遍历一样,直接使用队列来解决,把数据存入vector最后翻转一下即可。主要代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode...

2020-04-19 13:36:34 104

原创 操作系统复习之进程管理

进程与线程1.进程定义:进程是程序的一次执行。进程是资源分配的基本单位。进程控制块(PCB)描述进程的基本信息和运行状态,所谓的创建进程和撤销进程都是指对PCB的操作。系统主要利用PCB来描述进程的基本情况和活动过程。特征:动态性: 进程的实质是进程实体的执行过程。并发性:是指多个进程实题同存在于内存中,且能在一段时间内同时运行。独立性:是指进程实体是一个能独立运行,独立获得资源...

2020-04-18 20:08:50 138

原创 leetcode之旋转链表

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。简要题解:先算出头节点是链表中那个数字然后把链表拼接成一个循环链表后 找出找出头节点的位置 把尾节点接空指针即可主要代码如下;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode...

2020-04-18 10:57:45 80

空空如也

空空如也

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

TA关注的人

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