首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员必须掌握的算法

(4)广度优先搜索:在图或树中,从根节点开始,遍历所有相邻节点,然后再遍历它们的相邻节点,直到找到目标节点或遍历完整个图/树。 2....(2)最小生成树算法:在连通图中找到一棵包含所有节点的树,并且所有边的权值之和最小,如 Prim 算法和 Kruskal 算法。...(4)强连通分量算法:在有向图中找到强连通分量的个数及它们之间的关系,如 Tarjan 算法和 Kosaraju 算法。 4. 动态规划算法 动态规划是一种通过将问题分解为子问题来解决问题的方法。...它将每个子问题的解存储起来,以便在需要时可以重复使用它们,而不是重新计算它们。以下是一些常见的动态规划算法: (1)斐波那契数列:使用递归或循环计算斐波那契数列中的第 n 个数。...(3)最长公共子序列:给定两个序列,找到它们的最长公共子序列。可以使用动态规划进行求解。 这些算法是程序员必须掌握的基本算法。当然还有许多其他的算法也很重要,比如分治算法、回溯算法等等。

17010

三天两后晌入门Python(一)

例如 - a, b, c = 10, 20, "maxsu" 这里,将两个值为10和20的整数对象分别分配给变量a和b,并将一个值为“maxsu”的字符串对象分配给变量c。...加号( + )是字符串连接运算符,星号( * )是重复运算符。 3.Python列表 列表是Python复合数据类型中最多功能的。 一个列表包含用逗号分隔并括在方括号( [] )中的项目。...另一方面,值可以是任意任意的Python对象。 字典由大括号( {} )括起来,可以使用方括号( [] )分配和访问值。...它们也称为关系运算符。假设变量 a 的值 10 ,变量 b 的值是 20 ,则 - 运算符 描述 示例 == 如果两个操作数的值相等,则条件为真。...有两个成员运算符,如下所述 - 运算符 描述 示例 in 如果在指定的序列中找到一个变量的值,则返回 true ,否则返回 false 。

4810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    备战蓝桥杯————双指针技巧巧解数组3

    利用双指针技巧,一个指针用于遍历数组,另一个指针指向新数组的末尾。 移除元素: 给定一个数组和一个值,原地移除数组中所有等于该值的元素,返回新数组的长度。...使用双指针技巧,一个指针遍历数组,另一个指针记录非零元素的位置,并将非零元素依次移到前面。 反转字符串: 反转给定的字符串。...题目描述 给你一个字符串 s,找到 s 中最长的回文子串。...对于相邻字符 s[i] 和 s[i+1],以它们为中心,利用 Pame(s, i, i+1) 寻找长度为偶数的回文串。 在每次扩展中,更新最长回文串的长度和起始位置。...这样,通过遍历字符串,以每个字符及相邻字符为中心,不断扩展找到所有可能的回文串,最终得到最长回文串的长度和起始位置。

    13810

    你真的了解如何将 Nginx 配置为Web服务器吗

    配置块使用 listen 命令监听本机 IP 和端口号(包括 Unix domain socket and path),支持 IPv4、IPv6,IPv6地址需要用方括号括起来: server { listen...含有通配符(含有 *),如:*.lufficc.com 或 api.* 。 正则表达式,以 ~ 开头。 通配符只能在开头或结尾,而且只能与一个 . 相邻。...最长的,且以 * 开头的通配名,如:*.lufficc.com。 最长的,且以 * 结尾的通配名,如:api.* 。 第一个匹配的正则表达式。...如果找到的最长前缀匹配字符串以 ^~ 开头,则不再搜索正则表达式是否匹配。 存储匹配的最长前缀字符串。 测试对比 URI 与正则表达式。 找到第一个匹配的正则表达式后停止。...: 重复0次或1次 + : 重复1次或更多次 *: 重复0次或更多次 \d :匹配数字 ^ : 匹配字符串的开始 $ : 匹配字符串的介绍 {n} : 重复n次 {n,} : 重复n次或更多次 [c]

    2.1K80

    你真的了解如何将 Nginx 配置为Web服务器吗

    server server 配置块使用 listen 命令监听本机 IP 和端口号(包括 Unix domain socket and path),支持 IPv4、IPv6,IPv6地址需要用方括号括起来...含有通配符(含有 *),如:*.lufficc.com 或 api.* 。 正则表达式,以 ~ 开头。 通配符只能在开头或结尾,而且只能与一个 . 相邻。...最长的,且以 * 开头的通配名,如:*.lufficc.com。 最长的,且以 * 结尾的通配名,如:api.* 。 第一个匹配的正则表达式。...如果找到的最长前缀匹配字符串以 ^~ 开头,则不再搜索正则表达式是否匹配。 存储匹配的最长前缀字符串。 测试对比 URI 与正则表达式。 找到第一个匹配的正则表达式后停止。...: 重复0次或1次 + : 重复1次或更多次 *: 重复0次或更多次 \d :匹配数字 ^ : 匹配字符串的开始 $ : 匹配字符串的结束 {n} : 重复n次 {n,} : 重复n次或更多次 [c]

    2.4K70

    算法基础:五大排序算法Python实战教程

    一起看一下前6种排序算法,看看如何在Python中实现它们。 冒泡排序 冒泡排序通常是在CS入门课程中教的,因为它清楚地演示了排序是如何工作的,同时又简单易懂。...冒泡排序步骤遍历列表并比较相邻的元素对。如果元素顺序错误,则交换它们。重复遍历列表未排序部分的元素,直到完成列表排序。因为冒泡排序重复地通过列表的未排序部分,所以它具有最坏的情况复杂度O(n^2)。...通过选择排序,我们将输入列表/数组分为两部分:已经排序的子列表和剩余要排序的子列表,它们构成了列表的其余部分。我们首先在未排序的子列表中找到最小的元素,并将其放置在排序的子列表的末尾。...有趣的是,有多少人在玩纸牌游戏时会整理自己的牌!在每个循环迭代中,插入排序从数组中删除一个元素。然后,它在另一个排序数组中找到该元素所属的位置,并将其插入其中。它重复这个过程,直到没有输入元素。 ?...(2)重复合并,即一次将两个子列表合并在一起,生成新的排序子列表,直到所有元素完全合并到一个排序数组中。 ? ? 快速排序 快速排序也是一种分而治之的算法,如归并排序。

    1.4K40

    三分钟算法修行-无重复字符的最长子串的《四种解法》

    二、无重复字符的最长子串   心里话讲完了,来看看今天遇到的Boss: 《无重复字符的最长子串》。 Boss介绍: 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。   ...细节一:子串和子序列的区别 子串: 子串是必须能够从原字符串中找到的,在原字符串必须连续的一段。如:字符串abc中ab、bc都为子串。...如字符串abc,则第一轮比较为: 字符 a和子串a、ab、abc比较,第二轮则为字符b和子串b、bc比较,以此类推,最后获取不重复的子串长度。   ...如上面的例子开始索引和结束索引分别为0、2的话,当开始索引和结束索引都往右移动一位时,它们的索引值则分别为1、3,这个窗口包含的字符为:bcd。   ...执行结果: 八:算法思想在实际业务中的使用   1、滑动窗口算法常用于解决字符串、数组中涉及子元素的一些问题。如本题中的查找无重复字符串最长子串长度。

    2.5K21

    正则表达式来了,Excel中的正则表达式匹配示例

    当需要在单元格区域中找到某个值时,可以使用MATCH函数。在单元格中查找特定字符串时,FIND函数和SEARCH函数非常方便。如何知道单元格中是否包含与给定模式匹配的信息?...Pattern(必需):要匹配的正则表达式。当直接放在公式中时,模式必须用双引号括起来。 Match_case(可选):定义匹配类型。...在下面的数据集中,我们将搜索前两组中有3位数字、最后一组中有4位数字的10位数字。这些组可以用句点、连字符或空格分隔。第一组可以用括号括起来,也可以不用括号括起来。...如果没有“lemons”,则该点与除换行符以外的任何字符匹配。上面的表达式只执行一次检查,*量词重复它零次或多次,从由^定位的字符串开始到由$定位的字符串结束。...对于多行字符串,^和$字符匹配每行的开头和结尾,而不是输入字符串的开头和结尾,因此正则表达式只搜索第一行。 要匹配不以特定文本开头的字符串,使用正则表达式,如^(?!lemons).*$。

    22K30

    算法基础:五大排序算法Python实战教程

    让我们看一下前6种排序算法,看看如何在Python中实现它们! 冒泡排序 冒泡排序通常是在CS入门课程中教的,因为它清楚地演示了排序是如何工作的,同时又简单易懂。...冒泡排序步骤遍历列表并比较相邻的元素对。如果元素顺序错误,则交换它们。重复遍历列表未排序部分的元素,直到完成列表排序。因为冒泡排序重复地通过列表的未排序部分,所以它具有最坏的情况复杂度O(n^2)。...通过选择排序,我们将输入列表/数组分为两部分:已经排序的子列表和剩余要排序的子列表,它们构成了列表的其余部分。我们首先在未排序的子列表中找到最小的元素,并将其放置在排序的子列表的末尾。...有趣的是,有多少人在玩纸牌游戏时会整理自己的牌!在每个循环迭代中,插入排序从数组中删除一个元素。然后,它在另一个排序数组中找到该元素所属的位置,并将其插入其中。它重复这个过程,直到没有输入元素。 ?...(2)重复合并,即一次将两个子列表合并在一起,生成新的排序子列表,直到所有元素完全合并到一个排序数组中。 ? ? 快速排序 快速排序也是一种分而治之的算法,如归并排序。

    1.5K30

    30 个重要数据结构和算法完整介绍(建议收藏保存)

    话虽如此,我决定在CSDN新星计划挑战期间将我所了解的数据结构和算法集中起来。本文旨在使 DSA 看起来不像人们认为的那样令人生畏。...这样,与 BST 相比,trie 是一种更快的数据结构(使用 O(L)),但代价是 trie 存储要求。 它们是做什么用的? 树主要用于存储字符串及其值。...它基于相邻元素之间的重复交换(如果它们的顺序错误)。它是稳定的,它的时间复杂度是 O(n²) 并且它需要 O(1) 辅助空间。 计数排序(Counting Sort) 计数排序不是基于比较的排序。...作为一种 DAC 方法,您连续将 DS 分成两半,并将搜索中的值与中间元素的值进行比较。如果它们相等,则搜索结束。无论哪种方式,如果您的值大于/小于它,搜索应该继续在右/左半部分。...实际的子问题是要分别从序列 A 中的索引 i 开始,分别从序列 B 中的索引 j 中找到最长公共子序列。

    2.8K31

    适用于JavaScript和Node.js的JSON初学者教程

    在本教程中,您将学习什么是JSON以及如何在JavaScript和Node.js中使用它。 介绍 在后端和前端之间交换数据的最流行的格式之一是JSON,它用来表示JavaScript对象。...您可以在这样的组织中工作:有些后端服务是用Python编写的,有些后端是Java的,前端是JS的,它们都可以完美地交换JSON消息。 以JSON格式存储数据 首先JSON是一个字符串。...(几乎)所有内容都应使用引号引起来 与JavaScript不同,您只应使用双引号并将所有对象属性包装在其中。您不能使用单引号或反引号。...所有字段名称都用双引号引起来,但并非所有原始值都使用双引号引起来。数字和布尔值不带引号存储。 对象存储在花括号中 像在JS中一样,花括号用于存储对象。...它们都需要用大括号括起来才能成为JSON对象。 数组存储在方括号中 一切都与JS中完全一样,我们将数组的名称用双引号引起来,并且数组本身在方括号中表示。

    2.7K10

    普林斯顿算法讲义(三)

    在字典中找到一个具有以下特性的最长单词:您可以一次删除一个字母(从任一端或中间),结果字符串也是字典中的单词。...它解决了相关问题,如查找最长路径。 该算法将顶点放松与拓扑排序结合起来。我们将distTo[s]初始化为 0,将所有其他distTo[]值初始化为无穷大,然后按照拓扑顺序放松顶点。...**编写一个程序 Squeeze.java,该程序接受一个字符串作为输入,并删除相邻的空格,最多保留一个空格。 **删除重复项。**给定一个字符串,创建一个新字符串,其中删除所有连续的重复项。...串联重复。 在字符串 s 中,基本字符串 b 的串联重复是由至少一个连续的基本字符串 b 的副本组成的子字符串。给定 b 和 s,设计一个算法,在 s 中找到 b 的最大长度的串联重复。...该模式由 GCG 和 CTG 括起来,因此我们得到正则表达式 GCG (CGG | AGG)* CTG。 广告拦截。

    17210

    云课五分钟-0B快速排序C++示例代码-注释和编译指令

    09+0A:接着如下 Linux基础入门的内容包括以下几个方面: Linux基础命令:学习如何在Linux终端中使用基础命令,如文件和目录操作、进程管理、文本编辑等。...你需要对常见的算法和数据结构有深入的理解,比如数组,链表,栈,队列,哈希表,二叉树,图等。你不仅需要知道这些数据结构的基本操作,还需要知道如何在实际问题中应用它们。...通过遍历每个网格单元,并对其进行DFS搜索,找到以当前网格单元为起点的最长递增路径。使用一个缓存数组 cache 来记录每个网格单元对应的最长路径长度,避免重复计算。...看起来您在末尾标注了(linux -std=C++11),可能是想询问如何在Linux环境下使用C++11标准编译和运行这段代码。...for (auto i : arr) { cout << i << " "; } return 0; } 以上注释基本上解释了代码中的每个部分以及它们是如何在快速排序算法中工作的。

    17810

    Leetcode 【524、767、1053、1079】

    Longest Word in Dictionary through Deleting 解题思路: 这道题是给一个字符串s和一个单词数组,找到数组里面最长的单词,该单词可以通过删除s的某些字符来得到。...如果答案不止一个,返回长度最长且字典序最小的单词。如果答案不存在,返回空字符串。 双指针法。对于单词数组中的每个单词 word,字符串 s 和 word 逐字符比较向后滑动。...Reorganize String 解题思路: 这道题是给一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。...然后,每次从堆里面取出两个元素,依次加入到结果 ans 中,并将它们对应的次数减 1。如果不为 0,重新放入堆中。 这其实是一种贪婪的策略,每次取出的两个元素肯定是不相邻的。...第二个交换的位置 second 是从 first 的下一个位置开始,小于 A[first] 且最靠近 A[first] 的最大值的索引位置(如 [1,9,4,6,10] 中,first = 1,小于 A

    72230

    大厂面试系列(七):数据结构与算法等

    链表找环的入口 单链表的逆序 两个链表合并,最长公共子串问题 单链表逆序,快排,数组中找两个数和等于目标值 数组 在M个大小的数组中找到第K大的数(最大堆) 我现在有一个数组[1,2,3,4],请实现算法...,得到这个数组的全排列的数组,如[2,1,3,4],•[2,1,4,3]。。。。...给定一个数组,求该数组所有的自子数组 去掉一个字符串中的所有空格 给定一个数组,元素的大小0~25,有重复元素。...给一个字符串,删除最大连续相同的字符串并返回 有一组未排序的整形数组,你设计一个算法,对数组的元素两两配对,然后输出最大的绝对值差和最小的绝对值差的"对数" m*n二维数组整体有序,查找value 返回一个数字数组的排序值...200万行数据,如何在在每一行的尾部追加一个字符; 求一个字符串中最长不重复子串的长度 三个有符号的整型(long)数a, b, c,怎么判断a+b > c?

    1.2K20

    eval在python中是什么意思_如何在Python中使用eval ?

    ,eval函数能够识别字符串中的表达式并将其转换为相应的类型。...print(eval("sum([8, 16, 34])")) OUTPUT: 58 为了更好地了解eval函数,让我们看看如果将表达式用两个字符串括起来,它将如何响应,如下所示: #string in...如何在python中使用eval ? 在上一节中,我们已经了解了如何使用eval函数,但是在这里,我们将了解eval函数的其他参数如何影响其工作。...当我们向全局变量提供自定义词典时,它包含键“ __builtins__”的值,但如果不包含该值,则在解析表达式之前,将自动在“ __builtins__”下插入对内置字典的引用。...正如我们在上一节中看到的那样,我们限制eval函数,使其只能使用python的abs函数。 例如,假设我有一个应用程序,可以在给定数字或所有给定数字的总和中找到最小值。

    3.4K60

    70个NumPy练习:在Python下一举搞定机器学习矩阵运算

    答案: 45.如何在numpy数组中找到最频繁出现的值? 难度:1 问题:找到iris数据集中最常见的花瓣长度值(第3列)。 输入: 答案: 46.如何找到首次出现的值大于给定值的位置?...难度:2 问题:从数组a中,替换大于30包括30且小于10到10的所有值。 输入: 答案: 48.如何从numpy数组中获取n个值的位置? 难度:2 问题:获取给定数组a中前5个最大值的位置。...难度:3 问题:针对给定的二维numpy数组计算每行的min-max。 答案: 58.如何在numpy数组中找到重复的记录?...难度:3 问题:在给定的numpy数组中找到重复的条目(从第2个起),并将它们标记为True。第一次出现应该是False。 输出: 答案: 59.如何找到numpy中的分组平均值?...输入: 答案: 63.如何在一维数组中找到所有局部最大值(或峰值)? 难度:4 问题:在一维numpy数组a中查找所有峰值。峰值是两侧较小值包围的点。

    20.7K42

    【聊聊开发中十分重要的“必抓!”算法】

    它重复地遍历待排序的元素,比较相邻两个元素的大小,并根据需要进行交换,直到整个序列有序为止。 从序列的第一个元素开始,依次比较相邻的两个元素。...重复执行步骤1至步骤4,每次遍历都将确定一个当前未排序部分的最大元素,并将其交换到适当位置。 重复执行以上步骤,直到整个序列有序。    ...由于 5 大于 2,所以将它们交换位置,数组变为 [2, 5, 8, 1, 3]。 接下来,比较 5 和 8,它们已经是有序的,无需交换位置。...最后将所有子数组的结果合并起来得到最终的排序结果。 归并排序(Merge Sort): 将数组不断二分为较小的子数组,直到子数组的长度为 1。 将相邻的子数组合并成更大的有序数组。...四:算法的应用场景 搜索引擎:搜索引擎使用各种算法来帮助用户快速找到相关的信息,例如页面排名算法(如PageRank)和查询处理算法。

    16620

    学校早这么教正则表达式,少走多少弯路!那个分组用法震到我了

    在本文中,我们将探索如何在grep的GNU版本中使用正则表达式的基础知识,该版本在大多数Linux操作系统中默认可用。 ? grep的正则表达式 正则表达式(regex)是与一组字符串匹配的模式。...通常,你应该始终用单引号将正则表达式括起来,以避免shell解释和扩展元字符。 文本匹配 grep命令最基本的用法是在文件中搜索文字字符或字符序列。...方括号表达式 方括号表达式允许通过将一组字符括在方括号[]中来匹配它们。...以下表达式匹配以大写字母开头的每一行: grep '^[A-Z]' file.txt grep还支持用括号括起来的预定义字符类。下表显示了一些最常见的字符类: [:alnum:] 字母数字字符。...,它允许将模式分组在一起,并将它们作为一个项目引用。

    2.4K30
    领券