自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pwnpanda的博客

表白是最终胜利时的号角,而不是发起进攻的冲锋号

  • 博客(76)
  • 资源 (3)
  • 收藏
  • 关注

原创 源码阅读-MyTinyhttpd

C语言练习项目,小型http服务器,tiny-httpd源码阅读GitHub连接:https://github.com/gcspanda/tiny-httpd

2020-11-20 11:46:22 215

原创 C语言实现一个Linux shell

根据CSAPP shelllab改造的一个Linux shellGitHub连接https://github.com/gcspanda/MyShell

2020-11-02 13:00:57 354

原创 C++指针&&函数传参问题

指针啊!!!如果有代码理解不了,那就亲自敲出来慢慢的测试。------我说的算是留下个记录,将来不用每次都敲出来上次写的二级指针:https://blog.csdn.net/Pwnpanda/article/details/86775911#include<iostream>using namespace std; void TestA(int **A){ //这里...

2019-09-30 22:25:30 637

原创 C++实现链表

Dev C++实现了创建、增、删、改、查、找最大、找最小、置空、数组转链表、链表合并#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef struct LNode{ int data; LNode *next;} LNode;void...

2019-09-28 19:55:31 299

原创 C语言顺序表

VSCode#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;#define maxSize 100typedef struct SqList{ /* data */ int data[maxSize]; int length...

2019-09-26 20:38:13 261 1

原创 顺序表的简单实现

#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef struct List{ int data[MAXSIZE]; int length;} List;//初始化void InitList(List *L){ L->length = 0; ret...

2019-07-16 00:04:08 387

原创 力扣(LeetCode)791. 自定义字符串排序

思路:①先对T进行遍历,记录下T中的元素及个数②然后对S进行遍历,S即为题中定义的字母排序,那么凡是cMap[c] >=1 的,皆为在S和T中同时出现的,那么就留下这些元素,这个顺序刚好就是S的顺序,记得要把cMap[c]的值减掉③因为全是小写字母,所以可以对ASCII码97-122的字符进行遍历,如果这个字符的cMap[c]>=1就说明是存在于T中,却不在S中的,那么这些就额...

2019-06-04 18:25:32 364

原创 力扣(LeetCode)61. 旋转链表

思路:①先计算出head链表的长度②通过观察,发现题目的意思是从链表的末尾依次取出元素放置链表头部,那么这一定是个循环(参见示例2),所以在k>len的时候可以将k - n*len,那么新的k如果和len相等,那就刚好凑成一个循环,直接返回head即可,否则进入循环,找到第len-k个元素(头节点为1)设为p③temp = p->next,q = p->next,对q进行...

2019-06-03 18:42:42 310

原创 杂谈:六月二日晚刷题有感

敲代码不应该仅仅是敲代码,应该积极发掘代码的艺术性,敲出来的代码应该犹如一件精美的工艺品一样,让人看着赏心悦目,陶醉其中。我们应该化身攻城狮改造世界,而不仅仅是程序猿,更不应该是码农!...

2019-06-02 21:22:01 236

原创 力扣(LeetCode)1047. 删除字符串中的所有相邻重复项

思路:用栈来解决,在栈不为空的情况下,逐个取出字符然后和栈顶元素进行比较,如果相同则栈执行pop操作,然后取下一个字符串,如果不相等或者栈为空则执行push操作#include<iostream>#include<string>#include<stack>#include<algorithm>using namespace std;...

2019-06-02 21:17:12 725

原创 力扣(LeetCode)946. 验证栈序列

思路:按照顺序,每次从pushed里面取出一个元素,然后放入栈中通过while循环判断在栈不为空的情况下,栈顶元素是否和popped的元素是否相等,相等则该元素出栈,且popped迭代器向指向下一个元素示例1中:1、2、3、4入栈后,栈顶元素是4,popped第一个元素是4,那么popped的迭代器指向后一个5,栈顶元素执行pop操作后变为3,while循环终止,然后5入栈,此时再次进入...

2019-06-01 15:57:31 530

原创 力扣(LeetCode)890. 查找和替换模式

思路:代码里用了两个map,m和n,每次取出一个字符串,然后逐位取出字符,在m里面找是否已经存在第i个字符的key值,如果不存在,就添加到map中,如果已经存在则判断它的value值是否和当前pattern[i]的值是否相等,一旦出现不相等,则立刻可以判断这个字符串不符合要求但是如果仅仅使用上述条件是不行的(可以试着把关于n的全部注释掉,你会发现在示例中"abc"也会被判断成立),所以n就...

2019-05-31 22:21:17 322

原创 力扣(LeetCode)22. 括号生成

思路:DFS一波带走,输入n后,那么括号的总数量肯定是2n,所以进行全排列,然后从所有的组合中找出合适的放入vector容器中,这个方法应该算是比较简单的,所以时间复杂度和空间复杂度……唉反思:代码千万条,方法第一条,算法不学好,做题两行泪。#include<iostream>#include<vector>using namespace std;cla...

2019-05-30 19:13:29 597

原创 力扣(LeetCode)856. 括号的分数

思路:题目给定字符串,全部是左右括号组成,其实就是乘法分配律例:如果是(),那就是2的0次方,如果是(()),那就是2的1次方,如果是((())),那就是2的2次方,以此类推,如果是示例4那种混合型的,那就要用到乘法分配律了,( () (()) ) == (()) + ((())),把字符串数组全部拆成次方形式,然后计算相加。吐槽一下,做这个题,60%的时间用来理解题目到底啥意思,30%...

2019-05-28 15:29:12 494

原创 力扣(LeetCode)394. 字符串解码

思路:设置两个栈,一个栈用来存储数字,一个用来存储截取的字符串,然后相乘相加即可坑点:①因为传入的是字符串,所以要考虑数字位数大于一位怎么办,所以仅仅使用num = c - 48,是不行的;②在第三个示例上,最后结尾字符串是ef,前面没有数字,而且没有“[" 、"]”,所以这个算是特殊情况,这个时候ef就保存在str里面,直接添加到result里面就好(编程能力真的菜,思路很容易想,就...

2019-05-27 13:06:02 583 1

原创 力扣(LeetCode)144. 二叉树的前序遍历

思路:整体和94题类似,借助栈进行操作。前序遍历:根左右具体操作:(假设初始根结点不为空,申请栈空间,这里用Stack数组代替,下标top初始为-1)先把根结点放入Stack中,这样top!=-1,就可以进行while循环了①在第一遍while循环中,先把栈中的元素(根节点)取出来记为p,并打印(或保存),然后判断其右孩子结点是否存在,存在则放入Stack中,随后再检测其左孩子结点是...

2019-05-26 15:26:32 615 1

原创 力扣(LeetCode)94. 二叉树的中序遍历

思路:这次使用非递归法来遍历中序遍历:根左右,①所以在找到最左边的结点之前,我们一直找的是根左根左根左……直到我们找到最左边的子节点(假设其父节点是p)②则这个时候应该一层一层的回找相关的右结点,这个时候就把当前结点转到p->right,继续进行①操作,直到找到最右边的结点具体操作:(假设初始的时候根节点不为空,并申请一个栈Stack,这里用数组来代替,数组下标初始为-1)①...

2019-05-25 16:25:12 311

原创 力扣(LeetCode)657. 机器人能否返回原点

#include<iostream>#include<string>using namespace std;class Solution{public: bool judgeCircle(string moves) { int X=0,Y=0; for(auto c:moves) { ...

2019-05-25 14:30:11 275

原创 力扣(LeetCode)804. 唯一摩尔斯密码词

思路:通过字符串找出对应的摩斯密码,然后标记一下,本来用map,但是发现有问题,就改用set了#include<iostream>#include<cstring>#include<vector>#include<set>using namespace std;class Solution{public: int un...

2019-05-24 12:00:07 311

原创 力扣(LeetCode)709. 转换成小写字母

思路:可以直接调用tolower()函数,也可以对其ASCII码进行操作#include<iostream>#include<cstring>#include<cctype>using namespace std;class Solution{public: string toLowerCase(string str) { ...

2019-05-24 11:35:33 310

原创 力扣(LeetCode)669. 修剪二叉搜索树

思路:每次先判断根节点是否为空,为空直接返回,否则就判断根节点的值,在范围内就分别对左右子树进行判断,否则,例如根节点值小于L,那么这个结点左边所有的子树都不需要再判断了,因为这是二叉搜索树,根节点左边所有结点的值都小于该根节点的值递归就完事了#include<iostream>#include<cstdlib>using namespace std;ty...

2019-05-22 18:19:39 310

原创 力扣(LeetCode)965. 单值二叉树

思路:别问,问就是递归#include<iostream>#include<cstdlib>using namespace std;typedef struct TreeNode{ int val; TreeNode *left; TreeNode *right;} TreeNode,*SearchTree,*Position;...

2019-05-21 15:57:01 200

原创 力扣(LeetCode)700. 二叉搜索树中的搜索

思路:从根节点开始,如果根节点为空则返回NULL,如果根节点值大于val,那就往左子树上找,否则去右子树上找问号表达式真好用#include<iostream>#include<cstdlib>using namespace std;typedef struct TreeNode{ int val; TreeNode *left; ...

2019-05-21 15:45:39 263

原创 力扣(LeetCode)104. 二叉树的最大深度

思路:递归一下,如果理解有困难,建议自己动手画一下二叉树,三四个结点即可,方便理解注释掉的代码产生的结果可能是正确的,但是超时了#include<iostream>#include<cstdlib>using namespace std;typedef struct TreeNode{ int val; TreeNode *left; ...

2019-05-20 19:26:36 236

原创 力扣(LeetCode)226. 翻转二叉树

思路:从首节点开始,如果首节点为空则直接返回,否则交换左右子树,然后递归下一层PS:本来用swap函数就可以解决,不过我还是自己写个Swap,权当练习指针操作,可以使用指针的指针,也可以对取指针的地址,然后再用指针进行交换(对指针操作比较迷的话,就直接用swap函数,干净利落)#include<iostream>#include<cstdlib>using na...

2019-05-19 20:50:43 329

原创 力扣(LeetCode)617. 合并二叉树

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:注意: 合并必须从两个树的根节点开始。思路:常规操作,遍历+相加问题:为啥平台都能通过了,但是自己测试一直不对??这年头写代码都得凭感...

2019-05-19 20:20:43 243

原创 力扣(LeetCode)938. 二叉搜索树的范围和

给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23提示:树中的结点数量最多为 1000...

2019-05-18 21:38:42 295

原创 力扣(LeetCode)921. 使括号有效的最少添加

给定一个由 ‘(’ 和 ‘)’ 括号组成的字符串 S,我们需要添加最少的括号( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括号字符串有效。从形式上讲,只有满足下面几点之一,括号字符串才是有效的:它是一个空字符串,或者它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者它可以被写作 (A),其中 A 是有效字符串。给定一个括号字符串,返回为使结果字符串...

2019-05-17 18:13:58 227

原创 力扣(LeetCode)933. 最近的请求次数

写一个 RecentCounter 类来计算最近的请求。它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。返回从 3000 毫秒前到现在的 ping 数。任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。保证每次对 ping 的调用都使用比之前更大的 t 值。示例:输入:inputs = ...

2019-05-17 12:29:23 332

原创 力扣(LeetCode)1021. 删除最外层的括号

有效括号字符串为空 ("")、"(" + A + “)” 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非空有效字符串...

2019-05-17 10:44:15 274

原创 力扣(LeetCode)20. 有效的括号

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...

2019-05-17 10:33:00 240

原创 力扣(LeetCode)237. 删除链表中的节点

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:...

2019-05-16 11:22:52 315

原创 力扣(LeetCode)707. 设计链表

设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。...

2019-05-16 11:05:35 675

原创 力扣(LeetCode)160. 相交链表

编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如...

2019-05-15 18:36:49 470

原创 力扣(LeetCode)141. 环形链表

给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释...

2019-05-14 20:42:50 285

原创 力扣(LeetCode)21. 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:难点在于这是无头节点的链表,所以要首先找出头节点较小的链表标记为Min,另一个标记为Max,这样就对Max进行遍历,如果Max的值大于等于Min当前的值且小于...

2019-05-13 22:26:04 284

原创 力扣(LeetCode)234. 回文链表

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路:寻找中间结点,然后将后半部分链表倒置,后半部分链表长度是小于或等于原链表的,所以根据后半部分链表来确定对比循环次数#include<iostrea...

2019-05-12 20:36:31 447

原创 力扣(LeetCode)876. 链表的中间结点

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.v...

2019-05-11 22:32:25 206

原创 力扣(LeetCode)83. 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3注意:是给定排序链表思路:就是考验对指针的操纵,注释掉的代码是用两个指针(感觉除了比第一种麻烦点没啥优点)#include<iostream&gt...

2019-05-10 15:32:44 223

原创 力扣(LeetCode)203. 移除链表元素

删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路:首先要判断的是,头节点会不会就等于val,这个要单独处理,其他的正常处理就行了问题:①为什么不能使用free函数,使用free本地是可以成功的,但是让系统执行就会报错,改成de...

2019-05-09 22:38:20 800

C++Primer第五版习题代码

C++Primer第五版课后习题源代码,想要学习C++的各位可以参考一下

2018-11-12

UNIX Linux程序设计教程

UNIX Linux程序设计教程,使用C/C++进行开发,有兴趣的各位可以看看

2018-11-12

加密与解密实战全攻略

一本关于加密与解密的书,想学习逆向的各位可以看一下

2018-11-10

空空如也

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

TA关注的人

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