数据结构与算法
数据结构与算法
程序员十年
“编程控,跑步爱好者,羽毛球场上的快乐制造机。”
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【图解版】力扣第1题:两数之和
【图解版】力扣第一题:两数之和原创 2024-10-11 20:06:19 · 479 阅读 · 0 评论 -
【图解版】力扣第70题:爬楼梯
【图解版】力扣第70题:爬楼梯原创 2024-11-02 19:20:35 · 547 阅读 · 0 评论 -
【图解版】力扣第121题:买卖股票的最佳时机
【图解版】力扣第121题:买卖股票的最佳时机原创 2024-11-02 19:51:25 · 488 阅读 · 0 评论 -
【图解版】力扣第146题:LRU缓存
【图解版】力扣146题:LRU缓存,看不懂来找我!!!原创 2024-10-16 19:56:58 · 1895 阅读 · 0 评论 -
【图解版】力扣第162题:寻找峰值
【图解版】力扣第162题:寻找峰值原创 2024-10-20 13:32:28 · 530 阅读 · 0 评论 -
力扣 3. 无重复字符的最长子串
力扣 3. 无重复字符的最长子串原创 2023-05-27 12:20:59 · 163 阅读 · 0 评论 -
洛谷P1789【Mc生存】插火把
洛谷P1789题解原创 2023-05-22 23:01:53 · 604 阅读 · 0 评论 -
C++的sort函数如何实现从大到小排序
C++的sort函数如何实现从大到小排序原创 2023-05-23 20:32:47 · 13860 阅读 · 0 评论 -
冒泡排序(动态图解版)
冒泡排序(动态图解版)原创 2023-05-22 16:16:29 · 1113 阅读 · 0 评论 -
动态数组的运用
#include <stdio.h>template <class T>class arrQueue{private: int maxSize; int front, rear; T *queue;public: //构造函数 arrQueue() { maxSize=2; queue=new T[maxSize]; front=rear=0; }//入队列 bool in(T value) { if(queue==NULL) {原创 2021-06-21 21:40:50 · 176 阅读 · 0 评论 -
小明的迷宫(动态规划)
链接:https://ac.nowcoder.com/acm/contest/35075/F来源:牛客网注意输入的格式,要一个一个获取,且没有空格来区分字符原创 2022-06-19 14:43:17 · 369 阅读 · 0 评论 -
什么是动态规划?
动态规划是一类解决问题的方法,用于找寻一个集合里面的最优解,比如是统计最大值、最小值、统计数量。虽然说暴力搜索也能够解决一样的问题,但是动态规划在效率上会更高,比如找寻整个学校的最低分数是多少,暴力搜索估计就是遍历整个学校所有人的分数,但是动态规划就是让各班主任统计班里的最低分数,然后汇总给一个人,由这个人来找出里面的最低分数。原创 2022-09-02 14:32:57 · 493 阅读 · 0 评论 -
过河卒(超详解)
小编建议,如果对此题不太明白的童鞋,可以把解题答案一个一个默念一遍,边念边想,这样效果可能会好一点。看到这个问题,我们可以找到这么一个突破口找一个特例,记红点所经过的次数为p,左绿点所经过的次数为g1,上绿点所经过的次数为g2因为所经过的次数等于通过的路径数所以到达红点的路径p=g1+g2以次类推,整道题目的大致思路也就是这样子的解题思路:①将所有不能走的点全部标记起来②p=g1+g2(用for循环)得出每个点有多少条路经过#include<iostream>//首先将不能走原创 2021-04-20 07:57:11 · 1604 阅读 · 2 评论 -
如何找到二叉树中子节点x的根结点(递归实现)
这个代码可以参考****查找结点那个函数来写BTNode *FindNodeParent(BTNode*b,ElemType x){ BTNode*p; if(b==NULL) return NULL; else { if(b->lchild!=NULL) { if(b->lchild->data==x) return b; } if(原创 2021-05-18 21:15:30 · 465 阅读 · 0 评论 -
ACWing 240 食物链(并查集)
动物王国中有三类动物 A,B,C这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是 2 X Y,表示 X 吃 Y。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话原创 2022-07-05 17:27:07 · 269 阅读 · 0 评论 -
链队的销毁队列理解记忆
首先因为它不存在队满的情况,所以不用考虑返回真假值,故用voidvoid DestroyQueue(LinkQueue*&q)如果首结点不为空,就可以把它释放掉所以可以写出DataNode *pre=q->front;if(pre!=NULL){ free(pre);}接着在看看pre的next如果pre的next不为空,那么直接把pre指向的内容给释放掉,接着再把pre后移,再p移,最后再释放队列DataNode *p;原创 2021-04-22 23:11:20 · 1931 阅读 · 0 评论 -
如何理解记忆栈的GetTop函数
①首先要写函数的类型,之前的文章中就谈到了,一般考虑void和bool型,因为顺序栈要判断栈顶指针是否为-1,链式栈要判断头指针是否指空所以写出bool GetTop(SqStack*s,ElemType &e){}注意这里的s不需要&,因为这里只需要将e的值返回即可②写判断语句顺序栈{ if(s->top==-1) return false; 语句; return true;}链式栈{ if(s->next==原创 2021-04-17 20:56:23 · 5910 阅读 · 0 评论 -
迷宫问题栈求解代码
#include<iostream>using namespace std;const int M = 8, N = 8;int mg[M + 2][N + 2] = { {1,1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1},{1,0,0,0,0,1,1,0,0,1}, {1,0,1,1,1,0,0,0,0,1},{1,0,0,0,1,0,0,0,原创 2021-05-07 17:42:02 · 197 阅读 · 0 评论 -
将一个栈的数据转移到另一个栈(递归实现)
void TranStack(SqStack*& s1, SqStack*& s2){ ElemType e; if (!StackEmpty(s1)) { Pop(s1, e); TranStack(s1, s2); Push(s2,e); } }这里if的括号中也可以写成s->top!=-1,一个意思的,只不过上面是引用了一个函数原创 2021-04-16 12:08:28 · 1879 阅读 · 2 评论 -
如何将栈中的元素输出
首先需要写一个出栈函数,得到栈顶的值,才能将其输出bool Pop(SqStack*& s, ElemType& e){ if (s->top == -1) return false; e = s->data[s->top]; s->top--; return true;}注意:(1)这个出栈函数是bool型的原因:①当栈顶指针不断下降时,要在栈为空时停止下降,因此需要进行判断(真假),所以用bool②不用到判断时才用void,如果原创 2021-04-16 16:14:46 · 14603 阅读 · 0 评论 -
迷宫问题超详解(栈实现)
我给的建议是,如果你不是很理解这个问题的话,或者完全不懂,那么请进行默读或者朗读,并且边读边想这里我在网上找了一个视频,有基本思路的讲解,看完可以看以下 的代码讲解迷宫问题链接我们将问题分块解释#include<iostream>const int M = 8, N = 8;const int Maxsize = 200;using namespace std;int mg[M + 2][N + 2] ={ {1,1,1,1,1,1,1,1,1,1},{1,0,0,1,0,原创 2021-04-21 08:33:13 · 10355 阅读 · 4 评论
分享