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 ...
随机推荐
- ideal 创建maven 项目
一 准备工作,已经配置好了maven 环境 .没有的话,参考我的上一篇笔记. 二,ideal相关配置 打开ideal 找到设置. file ------->setting . 点击 ...
- 如何在pyqt中在实现无边框窗口的同时保留Windows窗口动画效果(一)
无边框窗体的实现思路 在pyqt中只要 self.setWindowFlags(Qt.FramelessWindowHint) 就可以实现边框的去除,但是没了标题栏也意味着窗口大小无法改变.窗口无法拖 ...
- Node.js下载安装与配置(windows)
一.Node.js下载 官网下载地址:下载 | Node.js 中文网 (nodejs.cn) 以Windows64位安装版为例,点击"Windows 安装包(.msi)"右侧的& ...
- JAVA之容器(转)
一.概览 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表. Collection 1. Set TreeSe ...
- Spring学习六:自定义Event事件
Spring 中的自定义事件 编写和发布自己的自定义事件有许多步骤.按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件. 步骤 描述 1 创建一个名称为 SpringExample 的 ...
- MySQL--事件/定时器
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11777311.html MySQL--事件/定时器 : 多个SQL的集合, 定时执行任务. 查 ...
- VUE项目部署到线上生产环境,Loading chunk xxx failed
项目部署到生产环境,路由点击无效,报错 Loading chunk chunk-xxxxx failed.(missing xxxx) 加载失败,错误的路径. 话不多说,直接贴代码: vue.conf ...
- docker | jenkins 实现自动化CI/CD,后端躺着把运维的钱挣了!(下)
前言 在上一篇文章中,我们使用docker编写Dockerfile文件,将我们自己的项目构建成镜像,然后发布到Docker Hub中,并且用自己的云服务器拉取Docker Hub上我们自己上传的项目镜 ...
- Python语言编程基础
Python 技能目标 理解编程基本原理和思想 掌握python语言的基础语法 能够使用python进行基本的开发工作 熟练使用项目开发IDE:eclipse,PyDev 能够使用Python开发简单 ...
- postman中用当前时间戳做请求的入参
用postman做接口测试的,有些接口需要带上当前时间的时间戳作为请求的入参,postman支持这种功能吗? 答案是肯定的. 文中有使用时间戳的两种方法和postman常用的预定义变量. 例子中接口的 ...