洪水 算法

算法学习day04链表part02-24、19、0207、142

package SecondBrush.LinkedList.LL1; /** * 24. 两两交换链表中的节点 * */ public class SwapNodesInPairs_24 { public ListNode swapPairs(ListNode head){ ListNode du ......
算法 0207 part day 142

manacher马拉车算法

[toc] # manacher算法 用于求解字符串中的最长回文子串 ## 相关资料 1. [马拉车算法(不懂问我)](https://blog.csdn.net/qq_43152052/article/details/100784978) ......
算法 manacher

算法学习day02数组part02-977、209、59

package SecondBrush.Array; /** * 977.有序数组的平方 * 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] * <p> * 不看解题思路,想到的是双指针 * 一个在开头,一个在末尾,但是一下没想到怎么写 * 看了一下一刷内容,想 ......
数组 算法 02 part day

算法中的数学--gpt回答

在算法工作中,用到最多的数学部分可以归纳为以下几个方面: 离散数学:离散数学是研究离散对象及其关系的数学分支,对于算法设计和分析非常重要。其中包括集合论、图论、逻辑、排列组合等内容。图论在许多算法领域都有广泛应用,例如网络流算法、最短路径算法、图匹配算法等。 概率与统计:概率论和统计学在算法设计和分 ......
算法 数学 gpt

代码随想录算法训练营第二十一天| 216.组合总和III 17.电话号码的字母组合

216.组合总和III 思路: 很像上一个组合类型的题目,唯一不同的就是自己写一个sum 代码: 1 void convertBST_cur(TreeNode* root, vector<TreeNode*>& nodes) 2 { 3 if (!root) return ; 4 if (root- ......
随想录 训练营 总和 随想 算法

递归算法理解 (一)

## Introduction 递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会 ......
算法

四种语言刷算法之LRU 缓存

力扣146. LRU 缓存 1、C typedef struct { int key; int val; UT_hash_handle hh; } LRUCache; LRUCache* usr = NULL; int size = 0; LRUCache* lRUCacheCreate(int c ......
缓存 算法 语言 LRU

万字长文解析最常见的数据库恢复算法: ARIES

#万字长文解析最常见的数据库恢复算法: ARIES > 首发地址: https://mp.weixin.qq.com/s/Kc13g8OHK1h_f7eMlnl4Aw ## Introduction ![image](https://img2023.cnblogs.com/blog/687923/2 ......
长文 算法 常见 数据库 数据

数据结构和算法的关系

1.数据结构是一门研究组织数据方式的学科,有了编程呢个语言也就有了数据结构,学好数据结构可以编写出更加漂亮,更加有效率的代码 2.要学好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决 3.程序=数据结构+算法 4.数据结构是算法的基础,换言之,要学好算法,需要把数据结构学到位 ......
数据结构 算法 结构 数据

数据结构与算法

数据结构和算法的重要性: 1.算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算。 2.一般来讲,程序会使用了内存计算框架(比如Spark)和缓存技术(比如Redis等)来优化程序,再深入的思考一下,这些计算框架和缓存技术,他的核心功能是哪个部分呢? 3.拿实际工作经历来说,在Uni ......
数据结构 算法 结构 数据

JavaScript aglo 算法 时间复杂度

https://www.bigocheatsheet.com/ https://www.hello-algo.com/chapter_preface/about_the_book/ gpt的回答 好的,下面给出这些算法的JavaScript例子,并给出它们的时间复杂度分析: O(1) - 常数时间复 ......
复杂度 算法 JavaScript 时间 aglo

保龄球Split算法

需求: 剩下两个或两个以上的球瓶它们之间没有球瓶; 例如: 7-9 或者 3-10 剩下两个或两个以上的球瓶,他们前面的球瓶被击倒,例如: 5-6 保龄球位置信息如下图: private int SplitBall(string positionStr) { //第一个球必须倒并且未倒的球大于1个 ......
保龄 保龄球 算法 Split

一种基于DeltaE(CIE 1976)的找色算法

```cpp // QuickFinder.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include #define _USE_MATH_DEFINES #include #include unsigned char buf[1080][1920][3]; c ......
算法 DeltaE 1976 CIE

文心一言 VS 讯飞星火 VS chatgpt (52)-- 算法导论6.2 4题

# 四、当i>A.heap-size/2 时,调用 MAX-HEAPIFY(A,i)会有什么结果? ## 文心一言: 当 i > A.heap-size/2 时,调用 MAX-HEAPIFY(A, i) 会将 A[i] 与其子树中的最大元素进行交换,并将 A[i] 视为新的根节点。这个操作会使得以 ......
文心 导论 算法 chatgpt VS

代码随想录算法训练营第二十一天| 77. 组合

回溯——组合 思路: 套了K次的循环,如何对K次循环呢,就需要一个startIndex,用它来控制从哪里开始 代码: 1 void combine_backTrack(int n, int k, int startIndex, vector<int>& path, vector<vector<int ......
随想录 训练营 随想 算法 代码

垃圾收集策略与算法

# 垃圾收集策略与算法 程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。 而对于 Java 堆和方法区,我们只 ......
算法 垃圾 策略

敏感词过滤--DFA算法及代码案例

我们应该都遇见过敏感词过滤,比如当我们输入一些包含暴力或者色情的文本,系统会阻止信息提交。敏感词过滤就是检查用户输入的内容有没有敏感词,检查之后有两个策略。 直接阻止信息保存,接口返回错误信息 允许信息保存,但是会把敏感词替换为*** 不管是哪种策略,首先都得找到是否包含敏感词,这个判断一般是在服务 ......
算法 案例 代码 DFA

Java 必会10大的经典算法

Java 必会10大的经典算法 https://github.com/hustcc/JS-Sorting-Algorithm 冒泡排序:思路-两层循环;外层循环控制比较的轮数,内层循环控制每一轮的比较和交换。在每一轮中,通过比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。 经过多 ......
算法 经典 Java

数据结构与算法 - 链表

# 双链表的的基本结构 从 STL 源码抽出的基本双链表结构 ## 代码 ```c++ #ifndef _GRAVER_GLIB_LIST_H_ #define _GRAVER_GLIB_LIST_H_ #include #include "graver/util/log_util.h" names ......
数据结构 算法 结构 数据

决战圣地玛丽乔亚重新归来之Day58--算法回溯

电话号码 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 多少个数 ......
算法 Day 58

欧几里得(及其扩展算法)

# 欧几里得算法 - 算法内容 计算两个数的最大公约数的算法,也叫辗转相除法。即: gcd(a,b)=gcd(b,a%b)。 - 数学证明 设gcd(a,b)=d,则必定有:d|a且d|b,则必定有d|(ax+by)而a%b=a-a/b*b,所以d|(a%b),则d必定为b和a%b的约数,并且a%b ......
算法

算法导论-第22章-BFS和DFS

本章将介绍图的表示和图的搜索。图的搜索指的是跟随图中的边来访问图中的每个结点。图搜索是整个图算法领域的核心。22.1介绍图的两种表示方法:邻接链表和邻接矩阵。22.2介绍广度优先搜索(BFS)。22.3介绍深度优搜索(DFS)。 # 22.1 图的表示 对于图 $G=(V, E)$,有用两种标准表示 ......
导论 算法 BFS DFS

算法导论-第33章-最近点对问题

# 最近点对问题 **问题描述**:在 $n \ge 2$ 个点的集合 $Q$ 中寻找最近点对的问题,“最近”指的是欧几里得距离最小,即点 $p_1=(x_1, y_1)$ 和 $p_2=(x_2, y_2)$ 之间的欧几里得距离 $d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$ ......
导论 算法 问题

算法导论-第16章-贪心算法

求解最优化问题时候通常要经过一串步骤,每一步都有多种选择。对于很多问题来说,用动态规划求最优解就是杀鸡用牛刀,可以使用更简单的算法。 **贪心算法**(greedy algorithm)在每一步都做出当时看起来是最佳的选择。也就是说,它综述做出局部最优的选择,希望通过局部最优解得到全局最优解。 ** ......
算法 导论

算法导论-第15章-动态规划

**动态规划**(dynamic programming)的思想是**分治思想**和**解决冗余**。 - 与分治法相似的是 - 将原问题**分解为若干个子问题**,先求解子问题,然后从这些子问题的解得到原问题的解。 - 与分治法不同的是 - 经分解的子问题**往往不是相互独立的**。若用分治法来解 ......
导论 算法 动态

算法导论-第13章-红黑树

第12章介绍了一棵高度为$h$的二叉搜索树,它可以支持任何一种基本动态集合操作,如`SEARCH`、`PREDECESSOR`、`SUCCESSOR`、`MINIMUM`、`MAXIMUM`、`INSERT`和`DELETE`等,其时间复杂度均为$\Omicron(h)$。因此,如果搜素树的高度较低 ......
导论 算法

算法导论-第17章-摊还分析

本章主要涉及理论分析,感觉第3版讲的不是很好(也有可能是翻译的语句不通顺),这里搬运了知乎上的文章。 - https://zhuanlan.zhihu.com/p/536470404 - https://zhuanlan.zhihu.com/p/577232877 - https://zhuanla ......
导论 算法

算法导论-第14章-数据结构的扩张

本章讨论通过扩展红黑树构造出的两种数据结构。14.1节介绍一种支持一般动态集合上顺序统计操作的数据结构。通过这种数据结构,我们可以快速地找到一个集合中的第 $i$ 小的数,或给出一个指定元素在集合的全序中的位置。14.2节抽象出数据结构的扩张过程,并给出一个简化红黑树扩张的定理。14.3节使用这个定 ......
数据结构 导论 算法 结构 数据

算法导论-第21章-用于不相交集合的数据结构

21.1节描述不相交集合数据结构支持的各种操作,并给出一个简单的应用。21.2节使用一种简单链表结构来实现不相交集合。21.3节使用有根树来实现,使用树表示的运行时间理论上好于线性时间,然而对于所有的实际应用它确是线性的。 # 21.1 不相交集合的操作 一个**不相交集合数据结构**(disjoi ......
数据结构 导论 算法 结构 数据

算法导论-第4章-分治法

# 回忆 在2.3.1中,归并排序使用了分治法。在分治法中,当递归地求解一个问题,在每层递归中执行如下三步骤: - 分解(Divide):将问题划分为子问题,子问题的形式与原问题一样,只是规模更小。 - 解决(Conquer):递归地求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。 - ......
导论 算法