c语言刷lleetcode记录
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记录的更多相关文章
- 刷题记录:[SUCTF 2019]CheckIn
目录 刷题记录:[SUCTF 2019]CheckIn 一.涉及知识点 1.利用.user.ini上传\隐藏后门 2.绕过exif_imagetype()的奇技淫巧 二.解题方法 刷题记录:[SUCT ...
- [BUUCTF-Pwn]刷题记录1
[BUUCTF-Pwn]刷题记录1 力争从今天(2021.3.23)开始每日至少一道吧--在这里记录一些栈相关的题目. 最近更新(2021.5.8) 如果我的解题步骤中有不正确的理解或不恰当的表述,希 ...
- 刷连记录的迟到检测---Table表格增加一列值
公司OA新增加了 刷脸记录 ,用于查看自己是否迟到,但是没有什么提醒,于是乎自己写了一个脚本 刷连记录 类似于这样的: 运行脚本后,是这个样子的: 擦,我本月已经迟到了 3次了.... 拖拽 刷脸记录 ...
- PE刷题记录
PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- Leetcode刷题记录(python3)
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...
- 刷题记录:[HarekazeCTF2019]encode_and_encode
目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...
- 刷题记录:[De1CTF 2019]Giftbox && Comment
目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...
- 刷题记录:[强网杯 2019]Upload
目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...
随机推荐
- Clang-Format 个人常用配置
Clang-Format 个人常用配置 本文记录 Clang-Format 个人常用配置. 欲了解更多配置选项,可查阅 官方文档. BasedOnStyle: Google AccessModifie ...
- Linux 配置 dubbo 和 dubbo的简单介绍。
一.是么是 dubbo? 一.dubbo? 1.因为项目之间需要相互调用,达到某种预期的结果 1.1 restful? 门户网站必须要知道用户的登录状态,但是用户的登录状态在登录项目中,所以门户网站 ...
- LockSupport、wait()、notify()
LockSupport 名词解释 LockSupport是一个在JUC包里的线程阻塞工具类,所有的方法都是静态方法,主要用途是让线程在任意位置阻塞,广泛应用在AQS和各种JUC的锁中. 代码 publ ...
- Html设置文本换行与不按行操作
图片来源:W3C 部分引自大佬:https://zhidao.baidu.com/question/424920602093167052.html 强制不换行 div{ white-space:now ...
- SpringBoot使用IDEA设置的外部Tomcat启动
前言 使用springboot内嵌的tomcat启动是没问题,但是工程是要放到服务器上的tomcat的,所以springboot内嵌的能够启动,但不代表服务器的tomcat能启动起来,我就遇到了这个问 ...
- VC 为程序创建唯一标识
转载请注明来源:https://www.cnblogs.com/hookjc/ 应用: 一台机器上只许运行一个客户端 同一个账号只允许登陆一个客户端 BOOl m_IsRun=false; HANDL ...
- ListIterator特有的方法
import java.util.ArrayList; import java.util.List; import java.util.ListIterator; /* 迭代 listIterator ...
- 通过安装HomeBrew来安装Python3
首先说什么是HomeBrew? 下面引用简书上一个博客的解释:(博客链接:http://www.jianshu.com/p/d229ac7fe77d) 为什么要使用Homebrew Mac OS X是 ...
- 对象到底是怎么new出来的
前言:要想理解本文,必须先了解JVM的内存结构 一.创建对象的方式 new:最常见 反射:Class.newInstance() 使用clone() 反序列化 二.创建对象的步骤(对象在JVM中怎么存 ...
- ConcurrentHashMap (jdk1.7)源码学习
一.介绍 1.Segment(分段锁) 1.1 Segment 容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并 ...