- 博客(15)
- 收藏
- 关注
原创 C++入门之容易忽视的namespace和函数重载
目录命名空间命名空间的用法1.直接把std整个展开2.对部分常用的展开3.指定命名空间命名空间在C/C++中,变量、函数都是大量存在的,这些变量、函数的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。命名空间的定义定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{},花括号中即为命名空间的成员。//1. 普...
2022-01-04 21:34:46
642
原创 图解单值二叉树和二叉树最大深度
目录单值二叉树思路二叉树最大深度思路:实现代码图解代码单值二叉树力扣思路左子树和跟比看是否相同,右子树和跟比看是否相同 一直递归下去bool isUnivalTree(struct TreeNode* root){ if(root == NULL) return true; //注意root->left!= NULL 否者会出现NULL访问val if(root->left &&...
2021-12-18 16:03:27
423
原创 图解二叉数的遍历
二叉数的遍历主要有四种:前序(先根)遍历,中序(中根)遍历,后序(后跟)遍历,层序遍历。这里主要讲前三种目录前言前序遍历又称先根遍历遍历结果为中序遍历又称中根遍历遍历结果后序遍历又称后根遍历遍历结果下面如何用代码实现这三种遍历前序遍历代码执行结果图解前序遍历代码递归中序遍历代码执行结果后续遍历代码执行结果前言任何一颗二叉数都可以看作:根 + 左子树 +右子树,而它的左右子树又可以看作(根 + 左子树 ...
2021-12-18 14:44:55
579
原创 最小的K个数(及Topk问题)
力扣目录思路1:直接按照升序排序,出原数组前K个数思路2:建一个小堆,出堆里前k个数思路1和思路2的缺点(topk问题)思路3(最优解)解决TopK问题:把数组里的前k个数建大堆,剩下的N-k个数在和堆顶比较,比堆顶小就替换,在调堆(向下调整)力扣思路1:直接按照升序排序,出原数组前K个数/** * Note: The returned array must be malloced, assume caller calls free(). *///升序 vo...
2021-12-15 17:26:55
4537
原创 如何创建一个堆(大堆),以及实现插入删除
//堆是否为空在开始之前有兴趣的hxd可以去看看下面这篇博客,这样可以更好理解以下内容堆的特殊实现(向下调整算法)及排序_darling-02的博客-优快云博客目录堆的定义堆的创建(初始化)堆的销毁堆的插入堆的删除获取堆顶元素堆的数据个数堆是否为空堆的打印堆的定义用一个结构体定义:一个数组(可动态增长),数组的大小,数组的数据//大堆typedef int TypeHeapDate;typedef ...
2021-12-15 14:15:33
1062
原创 堆的特殊实现(向下调整算法)及排序
目录什么是堆向下调整算法如何实现实现代码什么是堆堆是数据结构中的一种完全二叉树,其性质:堆中某个节点的值总是不大于(大堆)或不小于(小堆)其父节点的值 如下示例向下调整算法(前提)左右子树都是小堆才能实现例如下面给出的数组int a[] = {27,15,19,18,28,34,65,49,25,37};逻辑上看做一颗完全二叉树如何实现向下调整算法的实现1、选出左右孩子中小的那一个(15)2、小的这个孩子跟父亲比a...
2021-12-12 22:44:24
1062
原创 单链表OJ(2)
目录链表的中间节点思路1:先遍历一遍算出总的节点数量实现代码思路2:快慢指针实现代码链表中倒数第K个节点思路1:倒数第K个既为正数的链表长度(n)-k个实现代码思路二:快慢指针实现代码链表的中间节点力扣思路1:先遍历一遍算出总的节点数量然后在遍历找 总节点的一半的那个节点(既中间节点)实现代码struct ListNode* middleNode(struct ListNode* head){ ...
2021-12-10 15:28:34
654
原创 单链表OJ题(1)
目录移除链表元素思路:实现代码反转链表思路1:头插法实现代码思路2:从头开始改变链表的指向实现代码移除链表元素力扣思路:1.当第一个元素是需要删除的元素(要移动头的位置)2.当第一个元素不是需要删除的元素(不需要改变头的位置)如果第二个元素是需要删除的元素如果第二个元素不是需要删除的元素(移动cur 和 next 的位置)实现代码struct ListNode* removeE...
2021-12-09 14:56:43
615
原创 单链表的详解
目录什么是单链表什么是单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:(元素+指针) 元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。...
2021-12-09 10:20:59
4689
原创 模拟实现strlen
strlen()是一种(计算字符串的长度)的库函数。它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)取决于传给strlen参数的首地址。开始扫描字符串直到\'0'结束,其返回值不包括'\0'。原型size_t strlen ( const char * str );由原型可知 strlen的参数是 char*类型的指针 返回值size_t(unsigned int)因为计算的字符串最少也是零不可能是负数所以为size_t(unsigned int)...
2021-10-11 19:25:07
118
原创 C语言中让人容易采坑的sizeof()和strlen()
1.sizeof() 是C中的关键字,它是一种单目操作符,而不是函数。其作用是根据所给的操作数,计算出操作数所占内存空间的大小,单位是字节(bit)。操作数可以是类型、指针、数组和函数等strlen()2.strlen()是一种(计算字符串的长度)的函数。它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到字符串结束符’\0’为止。函数规定size_t strlen(const char* string);头文件:string.
2021-10-08 14:51:19
300
原创 用C语言实现简单的智力题
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。凶手是(a,b,c,d)其中的一个,假如A是凶手(说假话),那么B,C,D说的是真话。同理假如B说假话/C说假话/D说假话根据条件判断出凶手(3个人说真话,1个人说假话)所以利用for循环 循环4次 每次循环根据条件就可以找出凶手a的ASSCC
2021-10-06 23:17:19
306
原创 【for】循环
语法for(表达式1;表达式2;表达式3)循环语句;表达式1表达式1为初始化部分,用于初始化循环变量的。表达式2表达式2为条件判断部分,用于判断循环时候终止。表达式3表达式3为调整部分,用于循环条件的调整。...
2021-09-07 10:52:22
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人