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. 如何使用iconfont的CDN

    如何使用iconfont的CDN iconfont作为阿里的图标库,在开发过成功用的已经是非常广泛了,但iconfont并不需要将图标下载后使用,而是可以直接用cdn引入使用,至于使用流程,请看下文. ...

  2. clickhouse-mysql数据同步

    clickhouse版本:22.1.2.2 1.Mysql引擎(不推荐) CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] EN ...

  3. django之djangorestframework序列化操作

    只介绍序列化操作:serializers.ModelSerializer 与 serializers.Serializer 使用序列化的目的:将数据序列化成  JSON 对象 当页面上需要动态加载内容 ...

  4. Git配置用户信息和SSH免密

    一.配置用户信息 1.查看配置信息 # 查看所有配置 $ git config -l/--list # 查看系统配置 $ git config --system -l/--list # 查看用户配置 ...

  5. Activity 不只有跳转。功能篇(一)

    Activity生命周期 1:activity四种启动方式 standard,SingleTask,SingleTop,SingleInstance standard:是系统默认的,每次启动该acti ...

  6. 不会用SpringBoot连接Redis,那就赶紧看这篇

    摘要:如何通过springboot来集成操作Redis. 本文分享自华为云社区<SpringBoot连接Redis操作教程>,作者: 灰小猿. 今天来和大家分享一个如何通过springbo ...

  7. Java面试必问之线程池的创建使用、线程池的核心参数、线程池的底层工作原理

    一.前言 大家在面试过程中,必不可少的问题是线程池,小编也是在面试中被问啥傻了,JUC就了解的不多.加上做系统时,很少遇到,自己也是一知半解,最近看了尚硅谷阳哥的课,恍然大悟,特写此文章记录一下!如果 ...

  8. Spring学习六:自定义Event事件

    Spring 中的自定义事件 编写和发布自己的自定义事件有许多步骤.按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件. 步骤 描述 1 创建一个名称为 SpringExample 的 ...

  9. AFN框架

    0.AFN框架基本使用 0.1 AFN内部结构 AFN结构体 - NSURLConnection + AFURLConnectionOperation(已经被废弃) + AFHTTPRequestOp ...

  10. spring filter详解

    一.Filter基本工作原理 1.Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的. 2.当在 web.xml 注册了一个 ...