![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程题
SmiledrinkCat
收起锐气,踏遍荆棘,拥抱孤独,掩埋姓名,不过为挣足资本的傲气
展开
-
搜索算法练习——网络爬虫
网络爬虫是一种用于在互联网上查找特定内容的程序,它可以通过遍历网页链接来收集相关信息。我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历网页链接,并提取相关内容。原创 2024-04-02 13:30:00 · 247 阅读 · 0 评论 -
搜索算法练习——字谜游戏
字谜游戏是一个常见的搜索问题,目标是在给定的字谜板上找到所有可能的单词。可以使用深度优先搜索(DFS)或者广度优先搜索(BFS)来搜索字谜板并检查每个单词是否在字典中。原创 2024-04-02 09:30:00 · 254 阅读 · 0 评论 -
搜索算法练习——拼图问题
拼图问题是一个经典的搜索问题,其中目标是将一个拼图板恢复到初始状态,或者找到一个初始状态到目标状态的最短路径原创 2024-04-01 13:00:00 · 310 阅读 · 0 评论 -
搜索算法练习——八皇后问题
八皇后问题是一个经典的回溯算法问题,其目标是在8×8的棋盘上放置八个皇后,使得它们彼此之间不会相互攻击,即任意两个皇后都不在同一行、同一列或同一斜线上。我们可以使用回溯算法来解决这个问题,其中深度优先搜索(DFS)用于尝试每个可能的放置位置。函数来解决八皇后问题。如果找到解决方案,则打印棋盘状态;否则,打印未找到解决方案的消息。然后,我们初始化一个空棋盘,并调用。原创 2024-04-01 09:45:00 · 215 阅读 · 0 评论 -
搜索算法练习——迷宫问题
迷宫问题是一个经典的路径搜索问题,我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来解决。在这个问题中,我们需要找到从起点到终点的最短路径,或者找到所有可能的路径。首先,我们需要定义迷宫地图的表示方法。在本文中,我们可以使用一个二维列表来表示迷宫地图,其中不同的值表示不同的地形(例如,0表示可通行的空地,1表示墙壁)。接下来,我们可以使用深度优先搜索(DFS)和广度优先搜索(BFS)来遍历迷宫地图,并找到从起点到终点的路径或所有可能的路径。原创 2024-03-31 12:00:00 · 263 阅读 · 0 评论 -
搜索算法练习——图像填充问题
图像填充问题:给定一个二维网格和一个起始像素点,将与起始像素点相邻且颜色相同的像素点填充成目标颜色。我们分别使用深度优先搜索(DFS)和广度优先搜索(BFS)来解决图像填充问题,即将与起始像素点相邻且颜色相同的像素点填充成目标颜色。首先,我们需要定义一个二维网格的表示方法。我们可以使用二维列表来表示网格。原创 2024-03-31 10:15:00 · 170 阅读 · 0 评论 -
搜索算法练习——路径搜索问题
路径搜索问题:在给定的地图或图中,查找两个节点之间的最短路径或所有可能的路径。我们分别使用广度优先搜索(BFS)和深度优先搜索(DFS)来解决路径搜索问题,即查找给定图中两个节点之间的最短路径或所有可能的路径。首先,我们需要定义一个图的表示方法。在本例中,我们仍然使用邻接表来表示图。原创 2024-03-30 13:30:00 · 284 阅读 · 0 评论 -
搜索算法应用——查找元素、最短路径
练习应用搜索算法解决问题,如查找列表中是否存在某个元素、查找图中的最短路径等。原创 2024-03-30 10:00:00 · 222 阅读 · 0 评论 -
Python搜索算法——深度优先搜索DFS
深度优先搜索算法(Depth-First Search, DFS)是一种用于图或树中的搜索算法。它从根节点开始,沿着一条路径尽可能深地遍历,直到找到目标节点或遍历完整个路径,然后回溯并继续探索其他路径。DFS通常使用或数据结构来实现。原创 2024-03-29 13:00:00 · 445 阅读 · 0 评论 -
Python搜索算法——广度优先搜索BFS
广度优先搜索算法(Breadth-First Search, BFS)是一种用于图或树中的搜索算法。它从根节点开始,逐层遍历所有节点,直到找到目标节点或遍历完整个图或树。BFS通常使用队列数据结构来实现。原创 2024-03-29 09:00:00 · 393 阅读 · 0 评论 -
Python搜索算法——二分搜索
二分搜索算法(Binary Search)是一种高效的搜索算法,用于在有序数组中查找目标元素。它通过反复将目标值与数组的中间元素进行比较,并根据比较结果缩小搜索范围,直到找到目标值或确定它不在数组中。原创 2024-03-28 13:00:00 · 163 阅读 · 0 评论 -
Python搜索算法——线性搜索/顺序搜索
线性搜索算法,也称为顺序搜索算法,是一种简单直接的搜索方法。它逐个检查数据结构中的每个元素,直到找到目标元素或遍历完整个数据结构。原创 2024-03-28 09:30:00 · 239 阅读 · 0 评论 -
排序算法练习——合并K个排序数组:给定K个排序数组,将它们合并为一个排序数组
这个算法的时间复杂度为O(n * logk),其中n是所有数组中元素的总数,k是排序数组的个数。因为需要将所有元素都放入堆中,堆的操作的时间复杂度为O(logk),一共有n个元素,所以总的时间复杂度为O(n * logk)。接着,我们遍历每个排序数组,并将每个数组的第一个元素和所在数组的索引加入堆中。列表中,同时将该元素所在数组的下一个元素和所在数组的索引加入堆中。直到堆为空时,合并完成。合并K个排序数组:给定K个排序数组,将它们合并为一个排序数组。来存放合并后的排序数组,然后创建一个空的堆。原创 2024-03-27 14:00:00 · 94 阅读 · 0 评论 -
排序算法练习——按照字母异位词分组:给定一个字符串数组,将所有字母异位词(字符相同但顺序不同的字符串)分组到同一个组中
要按照字母异位词分组,可以使用哈希表来将每个字符串排序后作为键,相同键的字符串即为字母异位词。,对每个字符串进行排序,并将排序后的字符串作为键,原始字符串作为值,加入到哈希表中。最后返回哈希表中的值,即分组后的字母异位词列表。这个算法的时间复杂度为O(n * k * logk),其中n是字符串数组的长度,k是字符串的平均长度,因为需要对每个字符串进行排序。按照字母异位词分组:给定一个字符串数组,将所有字母异位词(字符相同但顺序不同的字符串)分组到同一个组中。在上面的代码中,我们使用。,然后遍历字符串数组。原创 2024-03-27 09:00:00 · 132 阅读 · 0 评论 -
排序算法练习——最接近的三数之和:给定一个整数数组和一个目标值,找到数组中三个数的和与目标值最接近的那个数
在上面的代码中,我们首先对数组进行排序,然后使用双指针法遍历数组,固定一个数nums[i],然后用左右指针分别指向i+1和末尾,依次向中间移动,并计算当前三个数的和current_sum。如果current_sum与target的差的绝对值小于closest_sum与target的差的绝对值,则更新closest_sum。要找到数组中三个数的和与目标值最接近的那个数,可以使用双指针法来解决。最接近的三数之和:给定一个整数数组和一个目标值,找到数组中三个数的和与目标值最接近的那个数。原创 2024-03-26 13:30:00 · 314 阅读 · 0 评论 -
排序算法练习——找到缺失的最小正整数:给定一个未排序的整数数组,找到缺失的最小正整数
在上面的代码中,我们首先遍历数组,将大于0且小于等于数组长度n的数放到正确的位置上,即数值i应该放在索引为i-1的位置上。然后再次遍历数组,找到第一个位置不对应的数,即为缺失的最小正整数。如果数组中都是连续的正整数,则缺失的最小正整数为n+1。要找到缺失的最小正整数,可以利用哈希表的思想。这个算法的时间复杂度为O(n),其中n是数组的长度,因为需要遍历数组两次。找到缺失的最小正整数:给定一个未排序的整数数组,找到缺失的最小正整数。原创 2024-03-26 09:00:00 · 98 阅读 · 0 评论 -
排序算法练习——按照字符串的异位词分组:给定一个字符串数组,将所有异位词(字符相同但顺序不同的字符串)分组到同一个组中
要按照字符串的异位词分组,可以使用哈希表来将每个字符串排序后作为键,相同键的字符串即为异位词。这个算法的时间复杂度为O(n * k * logk),其中n是字符串数组的长度,k是字符串的平均长度,因为需要对每个字符串进行排序。,对每个字符串进行排序,并将排序后的字符串作为键,原始字符串作为值,加入到哈希表中。最后返回哈希表中的值,即分组后的异位词列表。按照字符串的异位词分组:给定一个字符串数组,将所有异位词(字符相同但顺序不同的字符串)分组到同一个组中。在上面的代码中,我们使用。,然后遍历字符串数组。原创 2024-03-25 15:00:00 · 405 阅读 · 0 评论 -
排序算法练习——最大间距:给定一个未排序的数组,找到排序后相邻元素之间的最大差值
在上面的代码中,我们首先找到数组中的最大值和最小值,然后根据数组的长度计算出桶的数量和每个桶的大小。接着将元素分配到对应的桶中,并计算相邻非空桶之间的最大差值。这个算法的时间复杂度为O(n),其中n是数组的长度,因为只需要遍历数组一次。最大间距:给定一个未排序的数组,找到排序后相邻元素之间的最大差值。解决这个问题可以使用。原创 2024-03-25 09:45:00 · 392 阅读 · 0 评论 -
排序算法练习——按照区间开始时间排序任务:给定一组任务,每个任务包含开始时间和结束时间。找到能够同时执行的最大任务数量,并给出执行的顺序
在上面的代码中,我们首先按照任务的开始时间从小到大对任务列表进行排序。然后依次遍历排序后的任务列表,将可以同时执行的任务加入到当前执行列表中,即结束时间在当前任务开始时间之前的任务。在遍历过程中,我们记录同时执行的最大任务数量,并保存执行顺序。按照区间开始时间排序任务:给定一组任务,每个任务包含开始时间和结束时间。找到能够同时执行的最大任务数量,并给出执行的顺序。这个算法的时间复杂度为O(nlogn),其中n是任务的数量,因为需要对任务按照开始时间进行排序。这个问题可以通过贪心算法解决。原创 2024-03-24 15:00:00 · 148 阅读 · 0 评论 -
排序算法练习——根据身高和序号重组队列:给定一个数组,数组中的每个元素是一个整数对(h, k),代表一个人的身高和前面身高大于或等于h的人数。根据身高和序号重组队列,使得重组后的队列满足原始队列的性质
在上面的代码中,我们首先按照身高从高到低,序号从小到大对数组进行排序。然后遍历排序后的数组,将每个人按照其序号插入到结果列表中的相应位置,即根据序号k将身高较高的人插入到队列中的合适位置。这样得到的结果列表即为重组后的队列,满足原始队列的性质。根据身高和序号重组队列:给定一个数组,数组中的每个元素是一个整数对(h, k),代表一个人的身高和前面身高大于或等于h的人数。根据身高和序号重组队列,使得重组后的队列满足原始队列的性质。虽然有两层循环,但每个人只需插入一次,因此总的操作次数仍然是线性级别的。原创 2024-03-24 08:15:00 · 166 阅读 · 0 评论 -
排序算法练习——实现按照特定规则排序字符串数组:给定一个字符串数组,根据自定义的排序规则对字符串进行排序,如按照字符串的长度、字母顺序等
要实现按照特定规则排序字符串数组,你可以使用sorted函数并指定自定义的排序规则。原创 2024-03-23 13:30:00 · 268 阅读 · 0 评论 -
排序算法练习——实现按照频率排序数组:给定一个整数数组,根据元素出现的频率对数组进行排序
函数对数组进行排序。排序时,我们使用了lambda函数作为排序的关键字,先按照元素的频率进行排序,如果频率相同则按照元素本身的大小进行排序,最后设置。要实现按照元素出现频率排序数组,你可以使用哈希表来统计每个元素的出现次数,然后根据出现次数对元素进行排序。这个算法的时间复杂度取决于排序算法的性能,通常为。类统计整数数组中每个元素的出现次数,然后使用。在上面的代码中,我们首先使用。,其中n是整数数组的长度。来实现按照频率递减排序。原创 2024-03-23 00:15:00 · 114 阅读 · 0 评论 -
排序算法练习——实现合并区间:给定一组区间,将所有重叠的区间合并为一个区间
在上面的代码中,我们首先对区间列表按照区间的起始位置进行排序。然后遍历排序后的区间列表,依次将区间与合并后的最后一个区间进行比较,如果有重叠,则更新合并后的最后一个区间的结束位置;如果没有重叠,则将当前区间加入合并后的列表中。要实现合并区间,你可以按照区间的起始位置对区间进行排序,然后依次遍历区间,将重叠的区间合并。,其中n是区间的个数,因为排序的时间复杂度为O(nlogn),遍历一次区间列表的时间复杂度为O(n)。这个算法的时间复杂度为。原创 2024-03-22 14:00:00 · 248 阅读 · 0 评论 -
排序算法应用——查找第K大/小的元素
函数首先选择数组中的一个随机元素作为基准元素(pivot),然后将数组分成三个部分:小于pivot的元素、等于pivot的元素和大于pivot的元素。接着根据K与各部分长度的关系,决定在哪个部分进行递归查找,直到找到第K大的元素为止。来解决这个问题,快速选择算法是快速排序算法的变种,它可以在平均情况下以线性时间复杂度(O(n))找到第K大或第K小的元素。这个算法的平均时间复杂度为O(n),最坏情况下的时间复杂度为O(n^2),但出现最坏情况的概率非常低。要查找第K小的元素,可以将数组反转后再调用。原创 2024-03-22 10:00:00 · 184 阅读 · 0 评论 -
排序算法应用——查找中位数
要查找列表中的中位数,可以使用多种方法,其中一种方法是使用排序算法对列表进行排序,然后找到排序后的中间元素或中间两个元素的平均值。,它接受一个列表作为输入,并返回列表的中位数。在这个函数中,我们使用快速排序算法对输入列表进行排序,然后根据列表长度的奇偶性来计算中位数。在上面的代码中,首先定义了一个快速排序算法。然后,定义了一个函数。运行上面的代码,将会输出列表的中位数。原创 2024-03-21 16:00:00 · 309 阅读 · 0 评论 -
Python排序算法——归并排序
归并排序(Merge Sort)是一种经典的分治算法,其基本思想是将待排序序列分成两个长度相等(或大致相等)的子序列,分别对这两个子序列进行递归排序,然后将已排序的子序列合并成一个有序序列。归并排序的时间复杂度为O(nlogn),其中n是待排序序列的长度。它的性能比较稳定,不受输入数据状态的影响,因此无论待排序序列是否已经有序,归并排序的时间复杂度始终保持在O(nlogn)。尽管归并排序在最坏情况下和平均情况下的时间复杂度均为O(nlogn),但它的。,因为它需要额外的空间来存储已排序的子序列。原创 2024-03-21 09:00:00 · 135 阅读 · 0 评论 -
Python排序算法——快速排序
快速排序(Quick Sort)是一种高效的排序算法,其基本思想是通过选择一个基准元素,将待排序序列分割成两个子序列,其中一个子序列的所有元素都小于基准元素,而另一个子序列的所有元素都大于等于基准元素,然后对这两个子序列分别递归地进行快速排序,直到整个序列排序完成。快速排序的性能非常依赖于选择的基准元素。在最坏情况下,即每次选择的基准元素总是序列中的最大或最小元素时,快速排序的时间复杂度为O(n^2)。在最坏情况下,即选择的基准元素总是序列中的最大或最小元素时,快速排序的时间复杂度为O(n^2)。原创 2024-03-20 15:30:00 · 181 阅读 · 0 评论 -
Python排序算法——选择排序
每次遍历都会选择未排序部分的最小元素,因此总共需要进行n-1次遍历,每次遍历比较n-i-1次,所以总的比较次数为(n-1) + (n-2) + …选择排序(Selection Sort)是一种简单直观的排序算法,其基本思想是在待排序序列中选择最小(或最大)的元素,将其放置在序列的起始位置,然后将剩余的待排序部分继续进行选择排序,直到整个序列排序完成。选择排序的时间复杂度为O(n^2),其中n是待排序序列的长度。选择排序的性能与输入数据的状态无关,无论待排序序列是否有序,其时间复杂度都为O(n^2)。原创 2024-03-20 08:30:00 · 239 阅读 · 0 评论 -
Python排序算法——插入排序
在最好情况下,即待排序序列已经是按顺序排列时,插入排序的时间复杂度为O(n),此时只需要比较n-1次。在最坏情况下,即待排序序列是按逆序排列时,插入排序的时间复杂度为O(n^2),此时需要比较和移动的次数都达到了最大值。插入排序是一种简单直观的排序算法,其基本思想是将待排序序列分为已排序部分和未排序部分,然后逐步将未排序部分的元素插入到已排序部分的适当位置,直到整个序列排序完成。的情况下表现较好,但在处理大规模数据时,其性能会受到较大影响,不如快速排序或归并排序等高效的排序算法。总的来说,插入排序在。原创 2024-03-19 14:30:00 · 251 阅读 · 0 评论 -
Python排序算法——冒泡排序
冒泡排序是一种基本的排序算法,其思想是多次遍历待排序的序列,每次遍历都比较相邻的两个元素,如果它们的顺序不正确就交换它们,直到序列排序完成为止。在最好情况下,即待排序序列已经是按顺序排列时,冒泡排序的时间复杂度为O(n)。因此,冒泡排序的平均时间复杂度为O(n^2)。冒泡排序的性能取决于输入数据的状态。在最坏情况下,即待排序序列已经是按逆序排列时,冒泡排序的时间复杂度为O(n^2)。总的来说,尽管冒泡排序实现简单,但由于其较差的性能,通常不推荐在实际应用中使用。原创 2024-03-19 09:00:00 · 467 阅读 · 0 评论 -
Python算法练习
一些Python算法练习的示例和建议,我们可以选择适合自己水平和兴趣的算法进行练习,并逐步挑战更加复杂的问题。在解决问题时,我们要注重理解算法的原理,并尝试优化代码以提高效率。练习Python算法可以帮助我们提高解决问题的能力、优化代码效率,并深入理解Python语言的特性。原创 2024-03-18 13:15:00 · 1038 阅读 · 0 评论 -
系统的学习Python——编程练习
Python编程练习是提高编程技能和加深对Python语言理解的有效途径。原创 2024-03-18 09:30:00 · 771 阅读 · 0 评论 -
排序算法python
描述给定一个数组,请你编写一个函数,返回该数组排序后的形式。示例1输入:[5,2,3,1,4]复制返回值:[1,2,3,4,5]复制示例2输入:[5,1,6,2,5]复制返回值:[1,2,5,5,6]复制备注:数组的长度不大于100000,数组中每个数的绝对值不超过10^9109代码class Solution: def MySort(self , arr ): # 1.插入排序,运行时间2001原创 2021-07-15 17:13:48 · 130 阅读 · 0 评论 -
编程题1 ZJ2
描述有三只球队,每只球队编号分别为球队1,球队2,球队3,这三只球队一共需要进行 n 场比赛。现在已经踢完了k场比赛,每场比赛不能打平,踢赢一场比赛得一分,输了不得分不减分。已知球队1和球队2的比分相差d1分,球队2和球队3的比分相差d2分,每场比赛可以任意选择两只队伍进行。求如果打完最后的 (n-k) 场比赛,有没有可能三只球队的分数打平。 输入描述:第一行包含一个数字 t (1 <= t <= 10)接下来的t行每行包括四个数字 n, k, d1, d2(1 <= n原创 2021-07-14 17:16:39 · 211 阅读 · 0 评论