OJ算法
文章平均质量分 83
有关OJ算法的题目
夏天的阳光吖
互相关注,共同进步,每一天都进步一点点
展开
-
每日一题---OJ题: 设计循环队列
初始时,front和rear都指向数组的第一个位置(下标为0处)(ps: 题目条件说: 队列的长度为k,说明有效元素为k个,我们多开辟一个空间,队列的空间总数是 k+1 ,待会儿后面慢慢讲, 这里看不懂莫着急)原创 2024-04-19 20:25:00 · 710 阅读 · 0 评论 -
每日一题---OJ题: 用栈实现队列
这里,我先把有关栈的代码放出来哈~栈的头文件 Stack.hint top;}Stack;//初始化栈//入栈//出栈//获取栈顶元素//获取栈中有效元素的个数//检测栈是否为空//销毁栈栈的具体操作 Stack.c//初始化栈assert(st);//入栈assert(st);//扩容\n");exit(1);st->top++;//出栈assert(st);= 0);st->top--;//获取栈顶元素assert(st);原创 2024-04-18 21:11:01 · 823 阅读 · 0 评论 -
每日一题---OJ题: 用队列实现栈
队列的头文件 Queue.htypedef struct QueueNode { //队列的每一个结点}QNode;typedef struct Queue { //队列//头结点//尾结点int size;//队列的长度}Queue;//初始化队列//队尾入队列//队头出队列//获取队列头部元素//获取队列队尾元素//获取队列中有效元素的个数//检测队列是否为空//销毁队列定义队列的实现方法 Queue.c//初始化队列assert(q);原创 2024-04-17 23:44:34 · 692 阅读 · 0 评论 -
每日一题---OJ题: 有效的括号
那就是当*s已经走到'\0',但是栈不是空,说明栈里面还有左括号,不合题意, 此时StackEmpty返回false;如果栈为空,返回true。今天我们学习了一道OJ题---有效的括号,里面包含了栈的一些基础知识,希望看完这篇文章能对友友们有所帮助!我们刚写了一个栈,直接把 Stack.h 和 Stack.c 复制粘贴过去,把头文件删掉, 再把 typedef。如下图所示,上方表示一个字符串数组,存放不同种类的左括号和右括号,用一个指针依次遍历字符串中的每一个元素。OK啦,我们的栈就实现完毕!原创 2024-04-15 21:18:03 · 669 阅读 · 0 评论 -
每日一题---OJ题: 随机链表的复制
举个例子呗!还是上面那幅图第一步: 我们在原链表中插入拷贝结点我们先定义一个指针pcur,用来遍历原链表,再申请一块空间存放新结点copy,将pcur指针指向结点的数据域拷贝到copy新结点的数据域中。再让copy结点的next指针指向pcur结点的下一个结点,pcur结点的next指针指向copy结点(注意: 顺序千万不能颠倒哦!再让pcur指针移动到原链表的下一个结点,同时申请一块新结点,将原链表的数据拷贝到新结点中。原创 2024-04-14 15:01:25 · 983 阅读 · 0 评论 -
每日一题---OJ题: 环形链表 II
当slow指针走到中间的时候,fast指针开始进环链表头->入口点: L当slow指针开始进环的时候,fast指针在环中可能已经走了n圈了此时,fast指针和slow指针都在环里面,slow指针进环以后开始追击。在上一章中,我们知道,当。原创 2024-04-13 21:23:24 · 912 阅读 · 8 评论 -
每日一题---OJ题: 环形链表
思路分析: slow指针走1步,fast指针走2步,一定可以追上吗?会不会追不上?当slow指针走到中间的时候,fast指针开始进环当slow指针开始进环的时候,fast指针在环中可能已经走了n圈了因为slow指针和fast指针都在环里面,slow指针进环以后开始追击。假设此时fast指针和slow指针之间的距离为N , 每追击一次,它们之间的距离缩小一步。追击过程中, fast 和 slow 之间的距离变化第0次: N第1次: N-1第2次: N-2第3次: N-3。原创 2024-04-13 16:57:01 · 703 阅读 · 2 评论 -
每日一题---OJ题: 返回倒数第 k 个节点
初始时,fast 和 slow 指针都指向头结点fast 指针先走k步,假如这里k = 3,我们求倒数第3个结点,fast指针走到"4"的位置接着让 slow 和 fast 指针一起往后走,直到fast 指向空第一次:第二次:此时fast 指针指向空slow指针指向的结点刚好是倒数第3个结点,返回slow指向结点的数据域//初始时,fast指针指向头结点//初始时,slow指针指向头结点while(k--){ //fast指针先走 k 步while(fast!原创 2024-04-12 14:58:13 · 437 阅读 · 1 评论 -
每日一题---OJ题: 相交链表
今天我们学习了一道OJ题: 相交链表,里面运用到了计算链表的长度,查找链表的尾结点以及比较两个链表的结点等相关知识,希望看完这篇文章能对友友们有所帮助!上图中,A链表有5个结点,分别为 a1,a2,c1,c2,c3;B链表有6个结点,分别为 b1,b2,b3,c1,c2,c3;哈哈哈,代码量看似很多,但是里面的逻辑一点也不复杂,只要认真分析,一定能克服难关!长的链表先走长度差,再同时走找交点(第一个地址相同的就是交点)。接下来就是尾结点相同,说明两个链表相交,我们一起来找交点。原创 2024-04-12 11:05:15 · 535 阅读 · 1 评论 -
每日一题---OJ题: 链表的回文结构
比如:我们定义2个变量,A表示指向链表的头结点(第一个结点),rmid 表示指向反转链表返回的新结点我们让 A 和 rmid 指向的结点依次比较,如果中途 A 指向结点的值不等于rmid结点指向的值,那么直接退出循环,返回false;如果比较到 A 和 rmid 都为空, 那么返回true第一次比较: A 和 rmid 指向的结点的数据域都相等, 那么指针 A 向后走一步, 指针 rmid 向后走一步。原创 2024-04-11 15:32:22 · 865 阅读 · 3 评论 -
每日一题---OJ题: 旋转数组
/求出最终旋转次数//定义一个临时数组temp,初始化数组为0//将原数组的后time个数拷贝到临时数组temp的前面位置中//将原数组的前size-time个数拷贝到临时数组temp的后面位置中//将临时数组temp的所有元素拷贝回原数组i < size;运行结果为:我们把代码提交到leetcode上去,显示通过。原创 2024-04-11 01:05:02 · 786 阅读 · 1 评论 -
每日一题---OJ题: 消失的数字
是不是很简单?//计算 0~numSize 累加和,累加和依次减去数组中的值i++) {ret += i;return 0;运行结果为:8同时,leetcode也提交通过。原创 2024-04-10 17:11:11 · 443 阅读 · 1 评论 -
每日一题---OJ题:分隔链表
思路:定义2个链表,大链表和小链表,遍历原链表的节点将其放到对应的新链表中,最后将大链表和小链表首尾相连。原创 2024-07-01 11:06:21 · 379 阅读 · 1 评论 -
每日一题---OJ题: 环形链表的约瑟夫问题
/创建一个新结点//向内存中申请一块空间//如果申请失败,直接退出exit(1);//新结点的数据域为x//新结点的next指针置为空//将新结点返回第一次: 链表的头结点和尾结点都指向第一个结点,新结点的next指针指向NULL。原创 2024-04-05 19:22:42 · 587 阅读 · 1 评论 -
每日一题---OJ题: 合并两个有序链表
/定义l1变量,指向list1//定义l2变量,指向list2//定义新链表的头结点//定义新链表的尾结点if(l1){//l1没有遍历完链表if(l2){//l2没有遍历完链表//如果list1为空,则返回list2//如果list2为空,则返回list1//malloc了空间,但这块空间实际上用不了,应该将其释放掉return ret;//返回头结点的下一个结点。原创 2024-04-05 09:32:10 · 849 阅读 · 1 评论 -
每日一题---OJ题5: 反转链表
分别记录前驱结点,当前结点,后继结点,改变原链表指针的指向。原创 2024-04-04 21:43:03 · 338 阅读 · 1 评论 -
补充:OJ题4: 移除链表元素
/prev指针指向pcur的下一个结点//用临时变量del来保存pcur结点free(del);//将del结点释放,pcur现在是野指针//pcur指向prev结点的next指针//定义一个哨兵结点,便于后续执行删除操作//哨兵结点的next指向头结点//prev指向哨兵结点//pcur指向头结点,依次遍历链表中每一个结点while(pcur!=NULL){//从头结点开始,一直到NULL结束//结点的值为val,执行删除操作//prev指向pcur的下一个结点。原创 2024-04-04 20:24:40 · 256 阅读 · 1 评论 -
每日一题---OJ题4: 移除链表元素
/pcur用来遍历原链表//新链表的头结点为空//新链表的尾结点为空。原创 2024-04-04 10:23:37 · 293 阅读 · 1 评论 -
每日一题---OJ题3: 链表的中间结点
/count变量用来统计结点个数//pcur变量用来遍历整个单链表while(pcur!= NULL){//pcur指向下一个结点count++;//count自增一次//count保存了单链表的长度,我们用count/2得到中间结点的下标inext不为空时,进入while循环//fast指针每次走2步。原创 2024-04-04 00:37:31 · 363 阅读 · 1 评论 -
每日一题---OJ题2: 合并两个有序数组
int i = m;int j = 0;while(j!i++;j++;l3--;l1--;}else{l3--;l2--;l3--;l2--;原创 2024-04-02 19:01:29 · 494 阅读 · 1 评论 -
每日一题---OJ题1: 移除元素
int i = 0;int j = 0;for(i = 0;i<numsSize;= val){j++;return j;src++;src++;好啦,今天的讲解就到这里啦,我们下期再见!原创 2024-04-02 13:13:11 · 263 阅读 · 1 评论