自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 堆排序(向下排序法)

【代码】堆排序(向下排序法)

2022-08-21 09:19:27 397 1

原创 不会吧,不会吧,全网最细汉诺塔讲解,不会有人不知道吧。面试官直呼内行,看完只想默默找水喝(C语言)

最干hanoi,看完直呼口干舌燥Hanoi(汉诺塔问题)一、什么是汉诺塔二、分析1、移动过程2、应用思想+函数雏形3、部分代码三、总代码四、递归调用OVERHanoi(汉诺塔问题)一、什么是汉诺塔在研究汉诺塔问题时,我们要明白到底什么是汉诺塔。1、有三根相邻的柱子,标号为A,B,C。 2、A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘。3、现在把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。关于汉诺塔的基本玩法呢,大家也可以去度娘上搜索一下,切.

2021-08-20 00:53:02 1365 2

原创 Leetcode622.---设计循环队列cx

typedef struct { int* a; int k; // 队列最多能存多少个数据 int front; // 头 int tail; // 尾(队尾数据下一个)} MyCircularQueue;MyCircularQueue* myCircularQueueCreate(int k) { MyCircularQueue* obj = (MyCircularQueue*)malloc(sizeof(MyCircularQueue));.

2021-05-04 00:28:11 100

原创 数据结构---栈和队列的理解与实现cx

栈的含义及特性定义:限定仅在表尾进行插入或删除操作的线性表。表尾为栈顶,表头为栈底,不含元素的空表称为空栈。最先放入栈中元素在栈底,最后放入的元素在栈顶;而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。栈的存储结构栈有两种主要的存储结构:顺序栈和链式栈。栈是一种在操作上稍加限制的线性表,即其本质就是线性表,而线性表有两种主要的存储结构—顺序表和链式表,因此栈有两种存储结构,我们主要来实现顺序储存栈的顺序储存顺序栈和顺序表数据成员相同,不同之处: 顺序栈的入栈和出栈操作只允许.

2021-04-25 19:51:32 109

原创 Leetcode20.---有效的括号cx

题目注意由于C语言没有栈的库,所以要自己写一个栈代码and思路typedef char STDataType; struct Stack { STDataType* a;//静态栈相对动态栈有许多的缺点 int top; //栈顶 int capacity; //容量,方便增容 }; //typedef struct Stack ST; typedef struct Stack Stack; .

2021-04-25 19:19:22 103

原创 C语言 数据结构入门----顺序表的实现cx

顺序表的基础实现C语言实现顺序表的基础操作顺序表线性结构存储示意图C语言顺序表的基本操作定义顺序表结构体结构体初始化接口的列举(SepList.h)接口的实现(SepList.c)OVERC语言实现顺序表的基础操作所谓数据结构顺序表和链表的基本操作,实际上就是实现对一个顺序表(链表)的增删查改及其其他接口的实现。顺序表线性结构存储示意图C语言顺序表的基本操作定义顺序表结构体由长度和数据数组组成:typedef int SeqDataType;//类型typedef struct SeqLi

2021-04-23 22:51:45 282

原创 删除链表中重复的结点cx---超详细思路(三指针搞起)

题目思路删除结点一般要使用双指针,但通过画图得知,双指针在遍历的过程中会丢失链表,所以:常规情况考虑完,不可忽略的是任何一种的极端情况:分析完毕,但也要注意代码的完整。上才艺/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode.

2021-04-22 21:43:31 56

原创 Leetcode138.---复制带随机指针的链表cx

题目解题首先要看懂题意,什么是复杂结点优化主要针对所提出的两个问题:对其进行进一步的优化代码实现然后对所画的图的思路进行代码实现:总代码/** * Definition for a Node. * struct Node { * int val; * struct Node *next; * struct Node *random; * }; */struct Node* copyRandomList(struct Node* head).

2021-04-21 18:40:55 50

原创 力扣141.142---环形链表(龟兔指针的干活)cx

LeetCode141.首先明白什么是环形链表:依旧是应用龟兔即快慢指针:代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode *head) { struct ListNode* slow = head,* fast = head; .

2021-04-20 15:18:39 70

原创 Leetcode160.---相交链表cx

题目至于单链表的相交结点有一些说明思路余下的注意事项在代码中体现:上才艺/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { i.

2021-04-18 20:49:08 57

原创 链表的回文结构cx(快慢指针和链表逆置的综合升级)

题目会问结构即对称的结构思路一因为空间复杂度并不符合题意,故就不写代码了,但这种方法也可以通过测试用例思路二上才艺/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class PalindromeList {public: struct ListNode* middleNode(struct ListNode*.

2021-04-17 15:27:16 77

原创 一刀流---链表分割cx

上题目这个题目更像是前面题的变形,所以所应用的方法呢,还是差不多一样的但实现后我们会发现一个这样的错误:这一般是程序的迭代出现了问题,所以要想象极端情况好了,上才艺/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Partition {public: ListNode* partition(Lis.

2021-04-16 15:48:03 60

原创 合并二次方---合并两个有序链表cx

题目比较取小的结点,尾插进新的链表(无头)通过题目可以让我联想到前段时间的合并两个有序数组,所以第一个思路也就衍生出来后面是代码滴实现:struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ //先判断下l1或l2是否有空指针 if(l1 == NULL) return l2; if(l2 == NULL) return l1; struc.

2021-04-16 11:12:32 92

原创 超赞,重拳出击死亡快慢指针cx

快慢指针是较常用的一种算法,以两道题为例,具体实现下:Leetcode.876—链表的中间节点引用快慢指针转化为代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* middleNode(struct ListNode* head){ struct ListNo

2021-04-15 22:31:41 69

原创 Leetcode206.---反转链表cx(链表的逆置)

链表的逆置First代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head){ if(head == NULL||head->next == NULL)//判断是否为空链表或只有一个节点 .

2021-04-14 22:59:08 54

原创 Leetcode203.---移除链表元素cx

移除链表元素基础的思路当然必须要考虑某些特殊情况,如收个元素就是val代码实现/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* removeElements(struct ListNode* head, int val){ //返回地址故不需要二级指针 s.

2021-04-14 20:32:11 59

原创 Leetcode189.---旋转数组cx

题目既然是多种方法,我们就从之容易想到的思路开始再慢慢优化出最优解思路三来说较为新颖,这种只能多做题多看书来拓宽自己的思维那我们就具体实现下第三种void Rrverse(int* num,int left,int right)//逆置函数{ while(left < right) { int tmp = num[left]; num[left] = num[right]; num[right] = tmp;

2021-04-13 17:51:34 59

原创 Leetcode88.---合并两个有序数组cx

题目虽然时间复杂度O(m+n)已经最优,但由于空间复杂度为O(N)不符合条件,于是本着优化空间复杂度,有了思路二void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){ int end1 = m - 1;//第一个数组的小标 int end2 = n - 1;//第二个数组的小标 int end = m + n - 1;//合并之后最后一个元素的下标 while(e

2021-04-13 15:22:38 56

原创 Leetcode989.---数组形式的整形加法cx

/** * Note: The returned array must be malloced, assume caller calls free(). */int* addToArrayForm(int* A,int ASize, int K, int* returnSize){ int kSize = 0; int num = K; while(num) { ++kSize; num /= 10; } int len

2021-04-12 21:52:46 61

原创 Leetcode26.---删除有序数组中的重复项cx

删除有数组中的重复项题目第一种:以空间换时间但其空间复杂度为O(N),并不符合题目的要求,所以只是把思路捋顺一下,具体代码就不实现了第二种:运用三指针的形式基本思路捋顺后,代码就可以轻而易举地实现,但要注意的是,其中要充分考虑各个地方可能出现的越界问题。int removeDuplicates(int* nums, int numsSize){ if(numsSize == 0) { return 0;//解决倒二的越界风险

2021-04-12 10:02:30 52

原创 Leetcode27.---移除元素cx

每日一题——移除元素题目分析题目具体思路思路一:挪动数据这种思路为大家最容易想到的思路,也是较复杂的一种思路,具体代码如下:但通过具体的代码分析得知:不符合题目的要求,故行不通。思路二:运用指针将不是val的都放到一个新的数组中分析如下,可知依旧不符合题目要求:思路三:运用双指针经分析可见此方法可以依据题意合理完成,代码实现:int removeElement(int* nums, int numsSize, int val){ int src = 0,dst

2021-04-11 22:23:55 90 1

原创 墩墩墩---冒泡排序

什么是冒泡排序即两个相邻的数进行比较,如果不符合就交换,交换后交换的数与他相邻的数再进行比较,直到比较到最后一位(因为是叫做冒泡,所以我还喜欢叫它墩墩排序)例如假设有一个数组{4,3,2,1},我们要求要将它按从小到大输出,就可以运用到冒泡排序,由最左端开始:{3,4,2,1} —>{3,2,4,1} —> {3,2,1,4}这就是一趟,第一趟比较完开始第二趟 —> {2,3,1,4} —> {2,1,3,4} —> {2,1,3,4}第二趟,{1,2,3,4}第三趟。这

2021-01-25 20:38:29 430

原创 C语言笔记---数组

数组基本格式int arr[10];int 为数组类型arr为数组名称10为数组中元素的个数注意:初始化这是初始化的几种基本类型。这个是关于有无‘\0’的区别。‘\0’作为字符传结束的标志是至关重要的。数组的下标是从 0 开始的,最后是‘\0’。求数组元素的个数:sizeof(arr) / sizeof(arr[0]);一维数组在内存中的储存内存间是等差的,都向差4,而此数组又是整型的,所以数组在内存是连续存放的,随着数组下标的增长,地址是由低到高变化的。数组名

2021-01-25 16:08:26 125

原创 C语言笔记---函数(2)

函数(2)函数的声明和定义声明:函数的声明就是告诉编译器我们想要定义一个函数,并明确规定其返回值(输出)、函数名、参数表(输入)。定义:即函数的具体部分注意:函数如果在主函数后使用,一定要在前面声明所使用的函数。当然建议将函数放在主函数前,这样就可以减少声明的步骤。这只是我们在现阶段学习所用的写法,真正的写法是如下的方式:分别创建一个用以存放函数定义的 .c 文件和一个专门存放函数定义的 .h 文件函数的递归和迭代定义:递归就是一个函数在它的函数体内调用它自身。执行递归函数将反

2021-01-24 18:02:56 76

原创 关于素数N种解法

关于素数其实还有许多的解法,但由于时间关系就先介绍这种试除法及优化,等有时间还会继续更新其他的方法。

2021-01-22 23:14:49 152

原创 C语言笔记---函数

函数函数分为库函数和自定义函数库函数即存放在函数库中的函数。库函数具有明确的功能、入口调用参数和返回值。且每个函数的使用必须调用对应的头文件。在这给大家分享两个网站,都是查询相应的库函数的具体的应用条件及方法:https://en.cppreference.com/w/和·http://cplusplus.com/reference/cstring/strlen/?kw=strlen,英语不好的小伙伴也不用担心,可以直接翻译一下,也比较方便。自定义函数基本格式:下面就用几个具体的实例来更好的理解

2021-01-22 23:10:39 71

原创 基础函数的玩法---找两个数的最大值

话不多说,上才艺

2021-01-20 18:53:25 134

原创 无解的二分查找法

这是Robbie新推出的一个板块,每天分享一个小程序,基本都是可以训练一个或多个知识点的,且非常实用的哦,好了,废话不多说,今天是二分查找,上代码。题目是在一个有序数列中找一个数,大家可以先尝试自己写一下,然后在与Robbie来对比,看哪一个比较快捷。这是结果哦!!!...

2021-01-18 21:47:30 76

原创 C语言笔记---分支和循环

分支和循环今天正式进入我们C语言的学习了,加油加油加油!!!*分支分支主要应用的共有两种形式,一种是if…else,另一种则是switch语句。if主要的用法如下其中更有一点要注意的就是else与最近的if匹配,如下图,当然if也是支持嵌套的。关于switch语句,下图是关于这个语句的基本用法break为直接跳出语句,如果没用break将会出现下面图的结果,根据选择决定是否使用(如下方第二个图)。下面是关于default关键词的用法介绍。*循环循环主要给大家介绍while循环

2021-01-18 21:40:18 211

原创 C语言笔记---初识(2)

哈喽楼,我又来了,今天的内容整体来说都比较重要,虽说是简单介绍,可就是这个简单介绍我都学了好长时间,才有了一个大致的思路,好了好了,废话不多说,让我们开始吧。(一)初始C语言(二)1.常见关键字及作用void,功能:声明无返回值或无参数函数,声明无类型指针。char,功能:字符型类型数据。int,功能:整型数据,通常为编译器指定的机器字长。float,功能:单精度浮点型数据。double,功能:双精度浮点型数据。short,功能:短整型数据,可修饰的int。long,功能:长整型数据,可修

2021-01-15 22:24:56 139 1

原创 C语言笔记---初识(1)

Everybody,今天Robe又来更新了鸭,充实的一天又过去了,不知道大家就今天又学习了什么新的内容,那么就开始我这几天的笔记整理吧!!!今天的内容虽然较简单,但也很重要哦。(一)初始C语言(1)1.字符串+转义字符+注释1)字符串由一对双引号引起的字符叫做字符串。一对单引号引起的为一个字符。字符产的结束标志为’\0’,且不算做字符内容。关于结束标志的理解我们可以引入一个库函数来表示。strlen即string length—求字符串长度,(记得头文件哦)由这两幅图可以看出啊arr1

2021-01-13 20:26:37 236

原创 C语言笔记---初识(0)

这个是robe自己的学习笔记板块,这个假期主要会分享一些关于C语言的知识,从入门到较深入,以笔记的形式给大家整理出来,供大家参考和学习,特别是对一些想概括学习编程知识的童鞋,给大家一个整体的思路。希望可以和大家一起学习,如果有哪些不足也请大家多多指指教。(本人使用的是Visual Studio 2013,大家可以根据自己的喜好去官网下载)(一)初始C语言(0)1.什么是语言?语言对于人与人之间来说就是我们之间相互沟通的基础,比如汉语、英语等。而对于计算机来说,我们同样要实现与它的交流,于是就产生了计算

2021-01-11 16:44:56 170

原创 C语言flag(0)

自我介绍我呢,是2020级的大一新生,大家可以叫我robe,学习的专业是计算机科学与技术,当然在开始接触这门专业前,我并不了解计算机的具体方向,在这半年的学习中,对计算机方面产生了浓厚的兴趣,所以我打算用博客的方式来记录成长的每一步,努力完成从小白到大牛的蜕变,也请大家多多关照啦。目标就现在来说,学好基础的C语言,一步一个脚印,弥补高中留下的遗憾。大的目标就是成为一个计算机界的一位大牛,在大三时有选择的权利。关于学习0.利用好寒假时光,安排好合理的学习时间1.每天坚持写代码练习,克服懒惰的毛病,

2021-01-11 14:43:39 1005 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除