155. 最小栈

笔记:

在push(压栈)的时候思路:

typedef struct MinStack{
int data;
struct MinStack *next;
} MinStack; /** initialize your data structure here. */ MinStack* minStackCreate() {
MinStack *S = (MinStack*)malloc(sizeof(MinStack)); //为头指针分配空间
S->data = 0; //初始化
S->next = NULL;
return S;
} void minStackPush(MinStack* obj, int val) {
MinStack *s = (MinStack*)malloc(sizeof(MinStack)); //分配空间
s->data = val;
s->next = obj->next;
obj->next = s;
} void minStackPop(MinStack* obj) {
MinStack *s; //s为栈顶指针
if(obj->next == NULL) //栈空
return ;
s = obj->next;
obj->next = s->next;
free(s); //释放空间
} int minStackTop(MinStack* obj) {
return obj->next->data;
} int minStackGetMin(MinStack* obj) {
MinStack *p = obj->next;
int min = p->data; //初始化栈顶元素为最小值
while(p != NULL){ //遍历栈
if(p->data < min) //若遍历元素小于min则修改min为该元素
min = p->data;
p = p->next;
}
return min;
} void minStackFree(MinStack* obj) { //释放空间
MinStack *p = obj;
MinStack *s;
while(p != NULL){
s = p->next;
free(p);
p = s;
}
} /**
* Your MinStack struct will be instantiated and called as such:
* MinStack* obj = minStackCreate();
* minStackPush(obj, val); * minStackPop(obj); * int param_3 = minStackTop(obj); * int param_4 = minStackGetMin(obj); * minStackFree(obj);
*/

二叉树的广度优先遍历(BFS)和层序遍历相关的题目:

剑指 Offer 32 - I. 从上到下打印二叉树

解题链接

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/ /**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* levelOrder(struct TreeNode* root, int* returnSize)
{
// 模拟队列
struct TreeNode *queue[1100];
int front = -1;
int rear = -1;
int len = 0; // 用来记录数组的长度
struct TreeNode *p; // 工作指针
// 待返回的结果数组
int *array = (int *)malloc(sizeof(int) * 1100); if (root == NULL) {
*returnSize = 0;
return root;
}
// 根节点先入列
queue[++rear] = root;
while (front < rear) {
// 队列头元素出队
p = queue[++front];
// 结果数组存入节点的val
array[len++] = p->val;
// 如果当前节点有左孩子,那就入队
if (p->left != NULL) {
queue[++rear] = p->left;
}
// 如果当前节点有右孩子,那就入队
if (p->right != NULL) {
queue[++rear] = p->right;
}
}
*returnSize = len;
return array;
}

102. 二叉树的层序遍历

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/ /**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes)
{ struct TreeNode *queue[10000];
int front = 0;
int rear = 0;
// 工作指针
struct TreeNode *p = NULL;
// 结果数组
int **resArray = (int **)malloc(sizeof(int *) * 10000);
*returnColumnSizes = (int *)malloc(sizeof(int) * 10000);
*returnSize = 0; if (root == NULL) {
*returnSize = 0;
**returnColumnSizes = 0;
return resArray;
} // 先取到头结点,入队
queue[rear++] = root;
// 大循环
while (front != rear) {
int temp = rear;
int k = 0;
resArray[*returnSize] = (int *)malloc(sizeof(int) * (rear - front));
/* 小循环
为什么要用temp是因为rear的值会变(rear指向队列尾节点)
*/
while (front < temp) {
p = queue[front++];
resArray[*returnSize][k++] = p->val;
if (p->left) {
queue[rear++] = p->left;
}
if (p->right) {
queue[rear++] = p->right;
}
}
(*returnColumnSizes)[*returnSize] = k;
(*returnSize)++;
} return resArray;
}

 链接

(最短)路径相关的题目:

112. 路径总和

112题要背下来!!!

回溯法:

46

47

c语言刷lleetcode记录的更多相关文章

  1. 刷题记录:[SUCTF 2019]CheckIn

    目录 刷题记录:[SUCTF 2019]CheckIn 一.涉及知识点 1.利用.user.ini上传\隐藏后门 2.绕过exif_imagetype()的奇技淫巧 二.解题方法 刷题记录:[SUCT ...

  2. [BUUCTF-Pwn]刷题记录1

    [BUUCTF-Pwn]刷题记录1 力争从今天(2021.3.23)开始每日至少一道吧--在这里记录一些栈相关的题目. 最近更新(2021.5.8) 如果我的解题步骤中有不正确的理解或不恰当的表述,希 ...

  3. 刷连记录的迟到检测---Table表格增加一列值

    公司OA新增加了 刷脸记录 ,用于查看自己是否迟到,但是没有什么提醒,于是乎自己写了一个脚本 刷连记录 类似于这样的: 运行脚本后,是这个样子的: 擦,我本月已经迟到了 3次了.... 拖拽 刷脸记录 ...

  4. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  5. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  6. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  7. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  8. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  9. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

随机推荐

  1. python32day

    内容回顾 操作系统的历史 多道操作系统 分时操作系统 实时操作系统 进程 线程 并行和并发 同步和异步 阻塞和非阻塞 今日内容 进程的三状态图 进程的调度算法 给所有进程分配资源或者分配CPU使用权的 ...

  2. CentOS升级polkit版本,解决 Linux Polkit 存在权限提升的漏洞 (CVE-2021-4034)

    漏洞描述 受影响版本的 pkexec 无法正确处理调用参数计数,最终尝试将环境变量作为命令执行,攻击者可以通过修改环境变量来利用此漏洞,诱使 pkexec 执行任意代码,从而导致将本地权限提升为 ro ...

  3. Redis内存满了怎么办(新年快乐)

    Redis内存满了怎么办(新年快乐) 入我相思门,知我相思苦. 长相思兮长相忆,短相思兮无穷极. 一.配置文件 Redis长期使用或者不设置过期时间,导致内存爆满或不足,可以到Redis的配置文件re ...

  4. js源码-数组中的push()和unshift()方法的源码实现

    人话不多,直接上代码,在代码中解析,不足之处请谅解: push() Array.prototype._push=function(...value){//在Array原型链上添加_push方法 for ...

  5. 马哈鱼间接数据流中的where-group-by子句

    马哈鱼间接数据流中的where-group-by子句 本文介绍间接数据流中的where-group-by子句. 1.列在where子句中 WHERE子句中源表中的某些列不影响目标列,但对所选行集至关重 ...

  6. java8 stream详细

    转载:   https://zhuanlan.zhihu.com/p/299064490

  7. 监听器(Listener)详解及举例

    概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. 监听器组成要素: 事件源:事 ...

  8. (全局npmrc)nrm、npmrc、package-lock.json 的优先级

    npmrc 测试 nrm.npmrc 的优先级 实验 1. 没有设置 nrm. 默认设置 registry 为 https://registry.npmjs.org/ 下载的所有包都是通过以上域名获取 ...

  9. opcache,opcode,apc和apcu的区别

    opcode opcode是php解析器生成的操作码,类似java的字节码,main.class文件. opcache opcache是php的扩展,是一个实现将PHP字节码(OPCode)缓存到共享 ...

  10. Java微信公众号服务器配置-验证Token

    一.填写服务器配置 首先我们需要在微信公众平台上填写服务器配置 重点内容    服务器地址URL(一定要外网能访问的到)        在我们提交配置的时候,微信会发送GET请求到URL上,      ...