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. 字节跳动的一道python面试题

    #!/usr/bin/python #coding=utf-8 #好好学习,天天向上 lst = ['hongkong','xiantyk','chinat','guangdong','z'] lst ...

  2. 3D建模服务提供更高效、专业的3D制作能力,“筑”力开发者

    3D建模服务(3D Modeling Kit)是HMS Core在图形图像领域又一技术开放.3D建模产品的定位就是要做快速.简洁.低成本的3D制作能力,并陆续开放给有3D模型.动画游戏制作等能力诉求的 ...

  3. Java多线程专题5: JUC, 锁

    合集目录 Java多线程专题5: JUC, 锁 什么是可重入锁.公平锁.非公平锁.独占锁.共享锁 可重入锁 ReentrantLock A ReentrantLock is owned by the ...

  4. host文件以及host的作用

    什么是HOST文件:Hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统 ...

  5. element-ui 使用 Select 组件给 value 属性绑定对象类型

    qq_36437172 2020-06-28 22:38:49  778  收藏 分类专栏: element-ui 文章标签: element-ui Select 组件 value 属性 绑定 对象类 ...

  6. 【转】 Python生成器generator之next和send运行流程

    原文链接:https://blog.csdn.net/pfm685757/article/details/49924099 对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一 ...

  7. Linux Ubuntu安装Nvidia多GPU通信库NCCL

    0. 前言 在使用Python版本的PaddleDetection进行一些实验时,想同时利用多个GPU提高效率,遇到了一点问题 You may need to install 'nccl2' from ...

  8. Spark RDD学习

    RDD(弹性分布式数据集)是Spark的核心抽象.它是一组元素,在集群的节点之间进行分区,以便我们可以对其执行各种并行操作. 创建RDD的两种方式: 并行化驱动程序中的现有数据: 引用外部存储系统中的 ...

  9. 基于C6678+XC7V690T的6U VPX信号处理卡

    一.概述 本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发.板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V6 ...

  10. Solution -「LOJ #141」回文子串 ||「模板」双向 PAM

    \(\mathcal{Description}\)   Link.   给定字符串 \(s\),处理 \(q\) 次操作: 在 \(s\) 前添加字符串: 在 \(s\) 后添加字符串: 求 \(s\ ...