![](https://img-blog.csdnimg.cn/9fda29fea66a492dbdacf6622c2b1e98.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构
文章平均质量分 55
学习一些算法
小明2766
洄游的鱼终究会找到归途
展开
-
借助单调栈实现查找数组中每个数左边/右边第一个比它大/小的元素下标 Java模板
四种情况分别对应查找数组中每个数左边/右边第一个比它大/小的元素下标。原创 2024-05-02 14:50:02 · 246 阅读 · 2 评论 -
【算法】图存储-邻接表、以及基于深搜的拓扑排序——Python实现
基本概念有向⽆环图:没有环的有向图拓扑序:有向图 的拓扑序是指满⾜下列条件的顶点序列 v1,v2,...,vn对于每⼀条边(vi. vj) ,都有i < j原创 2022-10-08 13:40:16 · 298 阅读 · 0 评论 -
【算法】自己制作的《算法笔记》章节知识大纲思维导图
自己制作的《算法笔记》章节知识大纲思维导图。原创 2022-10-07 19:26:48 · 149 阅读 · 0 评论 -
【算法->复杂度】时间复杂度与空间复杂度
转自https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/r84gmi/本文针对原文简化了一些书写,并且加入了自己的理解。算法复杂度算法复杂度旨在计算在输入数据量 N 的情况下,算法的「时间使用」和「空间使用」情况;体现算法运行使用的时间和空间随「数据大小 N 」而增大的速度。算法复杂度主要可从 时间 、空间 两个角度评价:时间: 假设各操作的运行时间为固定常数,统计算法运行的「计算操作的数量」 ,以代表算法运行所需时.转载 2021-12-28 20:34:59 · 291 阅读 · 0 评论 -
【算法->动态规划】01背包问题 PAT1068 C++实现
来源:《算法笔记》01背包问题是一个多阶段动态规划问题。所谓多阶段动态规划问题,是指它可以描述成若干个有序的阶段,且每个阶段的状态只和上一个阶段的状态有关。问题描述有n件物品,每件物品的重量为w[i],价值为c[i]。现有一个容量为V的背包,问如何选取物品放入背包,使得背包内物品的总价值最大。其中每种物品都只有1件。样例:5 8 //n==5, V==83 5 1 2 2 //w[i]4 5 2 1 3 //c[i]如果暴力枚举,复杂度为O(2n);儿动态规划可以将复杂度将为O(n.转载 2021-11-25 15:16:29 · 857 阅读 · 0 评论 -
【算法->动态规划】求最长回文子串长度 PAT1040 C++实现
主要可以看leetcode的教程,然后自己敲一遍代码慢慢会理解的。这里有2种实现方式,以PAT甲级1040为例,可以对照看一下。实现方式1://来源:leetcode#include <cstdio>#include <iostream>#include <string>using namespace std;int longestPalindrome(string s){ int num = s.length(); if(num &l转载 2021-11-23 17:19:24 · 143 阅读 · 0 评论 -
【算法】判断是否是素数isPrime() C++实现
如果数字很大,可以转而用long long类型。#include <cmath>bool isPrime(int n){ if(n <= 1) return false; int sqr = (int)sqrt(1.0 * n); for(int i=2; i<=sqr; i++){ if(n % i == 0) return false; } return true;}...原创 2021-11-18 12:00:58 · 2658 阅读 · 0 评论 -
【算法->图】Dijkstra迪杰斯特拉算法 C++实现
迪杰斯特拉算法,用于解决单源最短路径问题。伪代码//G为图,一般设成全局变量;数组d为源点到达各点的最短路径长度,s为起点Dijstra(G, d[], s){ 初始化; for(循环n次){ u = 使d[u]最小的还未被访问的顶点的标号; 记u已被访问; for(从u出发能到达的所有顶点v){ if(v未被访问 && 以u为中介点使s到顶点v的最短距离d[v]最优){转载 2021-11-18 11:34:39 · 1232 阅读 · 0 评论