![](https://img-blog.csdnimg.cn/2020091319453486.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
编程之美
文章平均质量分 72
编程之美
wangwangmoon_light
江湖不易
展开
-
编程之美_目录
编程之美0)0_0_常用函数库0)0_1_测试函数总结1)1.1 数据结构之 数组2)1.2 数据结构之 字符串3)1.3 数据结构之 链表4)1.4 数据结构之 队列5)1.5 数据结构之 栈5)1.6 数据结构之 二叉树6)1.7 数据结构之 BFS7)1.8 数据结构之 DFS8)2.1 算法之 动态规划原创 2024-03-03 22:24:59 · 401 阅读 · 0 评论 -
1.1 数据结构之 数组&哈希表
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功本专栏是之前每日练习的提升与进阶,是在已经掌握了基本的方法之后,需要考虑性能等因素825. 适龄的朋友基本思路:int cmp(const void *a, const void *b) { return *(int *)b - *(int *)a;}int numFriendRequests(int *ages, int agesSize){ int cnt = 0; qsor原创 2021-12-27 23:15:14 · 236 阅读 · 1 评论 -
2.2 算法之 前缀和
学习笔记参考:https://leetcode.cn/leetbook/read/qian-zhui-he/nk1f5i/原创 2024-04-14 21:07:35 · 162 阅读 · 0 评论 -
2.1 算法之 动态规划
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功解决动态规划问题的核心:找出子问题及其子问题与原问题的关系找到了子问题以及子问题与原问题的关系,就可以递归地求解子问题了。但重叠的子问题使得直接递归会有很多重复计算,于是就想到记忆化递归法:若能事先确定子问题的范围就可以建表存储子问题的答案。动态规划算法中关于最优子结构和重复子问题的理解的关键点:证明问题的方案中包含一种选择,选择之后留下一个或多个子问题设计子问题的递归描述方式证明对原问原创 2021-10-07 16:54:12 · 577 阅读 · 0 评论 -
1.9 数据结构之 并查集
并查集(Union Find)也叫「不相交集合(Disjoint Set)」,专门用于 动态处理 不相交集合的「查询」与「合并」问题。很多数据结构都因为具有 动态 处理问题的能力而变得高效,例如「堆」「二叉查找树」等。所谓「动态」的意思是:要处理的数据不是一开始就确定好的,理解「并查集」动态处理数据的最好的例子是「最小生成树」算法(本专题第 3 节介绍)。可以使用并查集的问题一般都可以使用基于遍历的搜索算法(深度优先搜索、广度优先搜索)完成,但是使用并查集会使得解决问题的过程更加清晰、直观。原创 2024-04-14 21:00:41 · 378 阅读 · 0 评论 -
1.8 数据结构之 DFS
编程总结本篇参考LeetCode学习 https://leetcode-cn.com/leetbook/read/dfs/euapvg/树的深度优先遍历二叉树的深度优先遍历从「根结点」开始,依次 「递归地」 遍历「左子树」的所有结点和「右子树」的所有结点1. 前序遍历对于任意一棵子树,先输出根结点,再递归输出左子树的 所有 结点、最后递归输出右子树的 所有 结点。上图前序遍历的结果就是深度优先遍历的结果:[0、1、3、4、7、2、5、8、9、6、10]。2. 中序遍历对于任意一棵子树,先原创 2021-08-08 21:15:04 · 787 阅读 · 0 评论 -
1.7 数据结构之 BFS
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功。本学习来自 leetcode,整理提炼.https://leetcode-cn.com/leetbook/read/queue-stack/kyozi/广度优先搜索(BFS)是一种遍历或搜索数据结构(如树或图)的算法。如前所述,我们可以使用 BFS 在树中执行层序遍历。我们也可以使用 BFS 遍历图。例如,我们可以使用 BFS 找到从起始结点到目标结点的路径,特别是最短路径。我们可以在原创 2021-04-18 22:49:05 · 565 阅读 · 0 评论 -
1.6 数据结构之 二叉树
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功原创 2021-11-21 10:26:27 · 333 阅读 · 0 评论 -
1.5 数据结构之 栈
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功栈是限制插入和删除只能在一个位置上进行的线性表。其中,允许插入和删除的一端位于表的末端,叫做栈顶(top),不允许插入和删除的另一端叫做栈底(bottom)。对栈的基本操作有 PUSH(压栈)和 POP (出栈),前者相当于表的插入操作(向栈顶插入一个元素),后者则是删除操作(删除一个栈顶元素)。栈是一种后进先出(LIFO)的数据结构,最先被删除的是最近压栈的元素。栈就像是一个箱子,往里面放入一个小盒原创 2021-05-05 23:15:49 · 641 阅读 · 6 评论 -
1.4 数据结构之 队列
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功在 数组 中,可以通过索引访问 随机 元素。 但是,某些情况下,可能需要限制处理的顺序。在本 LeetBook 中,将会介绍两种不同的处理顺序,先入先出 和 后入先出 ;以及两个相应的线性数据结构,队列 和 栈 。顺序为自右往左.1. 循环队列的实现设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称原创 2021-04-11 17:55:24 · 191 阅读 · 0 评论 -
1.3 数据结构之 链表
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功单链表中的每个结点不仅包含值,还包含链接到下一个结点的引用字段。通过这种方式,单链表将所有结点按顺序组织起来1. 添加结点2. 删除结点3. 设计链表...原创 2021-04-10 14:36:07 · 157 阅读 · 0 评论 -
1.2 数据结构之 字符串
编程总结sprintf() 函数C 库函数 int sprintf(char *str, const char *format, …) 发送格式化输出到 str 所指向的字符串.#include <stdio.h>#include <math.h>#define M_PI 3.1415926int main(void){ char str[80]; int res = 0; sprintf(str, "Pi 的值 = %f %d 0x%x", M_P原创 2021-09-12 16:04:55 · 134 阅读 · 2 评论 -
0.0 常用函数库_字符串处理及快排
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧qsort手法1:qsort可以用来排序结构体,如以下代码:typedef struct student { int height; int weight; int id;} student_t;int cmp(const void *a, const void *b){ student_t *aa = (student_t *)a; student原创 2021-07-01 21:24:03 · 543 阅读 · 0 评论 -
0.1 测试函数总结
记录测试代码int main() { int *returnSize = NULL; int **returnColumnSizes = NULL; struct TreeNode *root = NULL; struct TreeNode *left = NULL; struct TreeNode *right = NULL; struct TreeNode *righ...原创 2020-02-16 18:53:31 · 403 阅读 · 1 评论 -
1. 分享记录
B树、B-树、B+树、B*树之间的关系在对n个元素进行快排的过程中,最坏情况需要进行 n-1 轮。快速排序的基本思想是分治。快排是不稳定的,关键在于划分过程。现有的几种划分过程,基本都是分两个指针从左右同时扫描,然后交换元素,交换过程很容易打乱元素位置。元素比较次数,也就是其复杂性分析。理想情况下,快速排序每次划分都将原始序列划分为两个等长的子序列。所以其比较次数为T(n)=2T(n/2)+n,所以其平均期望时间为nlog(n)。但在最坏情况下,即序列有序情形下,每次划分只能分出一个元素,因..原创 2021-11-12 19:42:29 · 1672 阅读 · 0 评论