
Python常见算法
文章平均质量分 95
L_cl
没有天赋,那就重复
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Python 算法零基础 6.贪心算法】
给定一个长度为 n 的整数数列 A,A 中第 i 个元素为 Ai(1≤i≤n),整数 res 初始为 0,如果一个数 a 存在于 A 且 a+1,a+2 均存在于 A 中,则 res 加 1,请输出最后 res 的值。例如:字符串 abe,可分为 (ab)(e),与(a)(be),前者括号内的字母数组成的数组为 2,1,后者为 1,2,所以答案为 (ab)(e)。现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?原创 2025-06-11 22:14:36 · 1151 阅读 · 0 评论 -
【Python 算法零基础 1.线性枚举】
m 是每次操作的量级,对于求最大值和求和来说,因为操作比较简单,所以 m为 1,则整体的时间复杂度是 O(n)的。:如果遍历结束后没有找到不重复的元素,说明不重复的元素可能在数组的边界:检查第一个元素。给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。如果这三个元素都是奇数,则说明存在三个连续的奇数,函数立即返回。,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回。开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.原创 2025-03-17 22:06:03 · 930 阅读 · 0 评论 -
【Python 算法零基础 2.模拟 ① 基于数组】
模拟算法就是根据题目要求解题,一些复杂的模拟题只是把一些简单操作组合起来🚀。原创 2025-03-20 20:07:51 · 603 阅读 · 0 评论 -
【Python 算法零基础 2.模拟 ② 基于字符串】
我们将第 0 个字符串与第 2 个字符串匹配,因为 word[0] 的反转字符串是 "dc" 并且等于 words[2]。- 我们将第 1 个字符串与第 3 个字符串匹配,因为 word[1] 的反转字符串是 "ca" 并且等于 words[3]。- 我们将第 0 个字符串与第 1 个字符串匹配,因为 words[1] 的反转字符串 "ab" 与 words[0] 相等。(1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。原创 2025-03-20 18:05:43 · 766 阅读 · 0 评论 -
【Python 算法零基础 2.模拟 ③ 基于链表】
请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。小伙伴离开圈子的顺序:5、4、6、2、3。2) 顺时针数 2 名小伙伴,也就是小伙伴 1 和 2。4) 顺时针数 2 名小伙伴,也就是小伙伴 3 和 4。6) 顺时针数 2 名小伙伴,也就是小伙伴 5 和 1。8) 顺时针数 2 名小伙伴,也就是小伙伴 3 和 5。- 标记为红色的节点之和:4 + 5 + 2 = 11。3) 小伙伴 2 离开圈子。5) 小伙伴 4 离开圈子。,包含从 1 到 n 的编号,表示参与游戏的人。原创 2025-03-20 17:32:18 · 930 阅读 · 0 评论 -
【Python 算法零基础 2.模拟 ④ 基于矩阵】
本文介绍了多个基于矩阵的算法问题及其解决方案。首先,2120题要求根据机器人的起始位置和指令序列,计算从每条指令开始执行时机器人能执行的指令数量。1252题涉及对矩阵进行增量操作后,统计奇数值单元格的数量。832题要求对二进制矩阵进行水平翻转和反转操作。657题通过判断机器人的移动序列是否使其返回原点。289题模拟生命游戏,根据细胞状态更新矩阵。59题生成一个螺旋排列的n×n矩阵。885题则要求在网格中按螺旋顺序访问所有位置。这些问题展示了矩阵在算法中的广泛应用,涵盖了模拟、统计、翻转和生成等多种操作。原创 2025-05-14 22:21:43 · 1608 阅读 · 1 评论 -
【Python 算法零基础 2.模拟 ⑤ 基于栈和队列】
本文介绍了两个基于栈和队列的算法问题及其解决方案。第一个问题是通过栈操作构建目标数组,利用栈的“Push”和“Pop”操作,根据给定的目标数组和整数n,生成相应的操作序列。算法通过遍历1到n的数字,判断是否在目标数组中,依次添加“Push”或“Push”+“Pop”操作,最终返回操作序列。第二个问题是计算无法吃午餐的学生数量,利用队列和三明治栈的匹配机制,统计学生对三明治的需求,并遍历三明治供应顺序,分配三明治。若某类三明治需求为0,则返回剩余学生数量。两个问题均通过简单的数据结构和逻辑判断,高效解决了实际原创 2025-05-11 20:59:28 · 1126 阅读 · 0 评论 -
【Python 算法零基础 2.模拟 ⑥ 算法技巧】
由于 num1 < num2 ,num2 减 num1 得到 num1 = 2 ,num2 = 3 - 2 = 1。由于 num1 == num2 ,num1 减 num2 得到 num1 = 10 - 10 = 0。- 操作 3 :num1 = 1 ,num2 = 1。由于 num1 == num2 ,num1 减 num2。- 操作 2 :num1 = 2 ,num2 = 1。- 第 1 秒,内存条 2 被占用 1 位内存,内存条 2 现在有 10 位剩余可用内存。原创 2025-05-15 14:29:41 · 927 阅读 · 0 评论 -
【Python 算法零基础 2.模拟 ⑦ 实战】
② 因为n为二进制数字,所以每次遍历n时整除2,然后因为二进制上只有0 和 1,而 sum + 0 不会改变sum的值,所以直接用 sum + n % 2,即可得到每位1的个数。① 遍历数组nums,从遍历 i 处索引分割数组, 如果索引 i 处左边元素求和 sum(:i) == 索引 i 处右边元素求和 sum(i + 1:),则返回索引 i。② 将 a - b 赋值给 b,此时 a = a+b,a - b = a,b = a。③ 将 a - b 赋值给 a,此时 a = a +b, b = a。原创 2025-05-15 15:55:01 · 789 阅读 · 0 评论 -
【Python 算法零基础 3.递推】
长度为 n(1 ≤ n < 40)的只由“A"、"C"、"M"三种字符组成的字符串,可以只有其中一种或两种字符,但绝对不能有其他字符,且禁止出现 M 相邻的情况,问这样的串有多少种?递推 —— 递推最通俗的理解就是数列,递推和数列的关系就好比 算法 和 数据结构 的关系,数列有点像数据结构中的线性表(可以是顺序表,也可以是链表,一般情况下是顺序表),而递推就是一个。T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2。原创 2025-05-17 17:35:10 · 1084 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ① 选择排序】
即使我们的计算机速度超快,并且可以在1秒内计算 10^8 次操作,但选择排序仍需要大约一百秒才能完成。6 是最大的整数,对于数组中的其他整数,6 至少是数组中其他元素的两倍。6 的下标是 1 ,所以返回 1。进行排序,选择排序的时间复杂度为 O ((m+n)²),其中 m 和 n 分别是两个数组的长度。选择排序后的列表(数组)应遵守小(大)的在前,大(小)的在后的升(降)序顺序。对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。,存放到排序序列的起始位置,然后,再从。原创 2025-05-18 20:13:00 · 1194 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ② 冒泡排序】
从未排序序列开始,初始时整个数组都是未排序的。:遍历未排序部分的所有元素,找到其中的最小值。使用变量min_idx记录最小值的索引,初始时假设当前未排序部分的第一个元素是最小的。将找到的最小值与未排序部分的第一个元素交换位置。此时,未排序部分的第一个元素成为已排序序列的一部分。:缩小未排序部分的范围(从下一个元素开始),重复寻找最小值并交换的过程,直到整个数组排序完成。原创 2025-05-19 20:26:19 · 1457 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ③ 插入排序】
从未排序序列开始,初始时整个数组都是未排序的。遍历未排序部分的所有元素,找到其中的最小值。使用变量min记录最小值的索引,初始时假设当前未排序部分的第一个元素是最小的。将找到的最小值与未排序部分的第一个元素交换位置。此时,未排序部分的第一个元素成为已排序序列的一部分。缩小未排序部分的范围(从下一个元素开始),重复寻找最小值并交换的过程,直到整个数组排序完成。①获取数组长度n。遍历i从0到n-1,共进行n轮。:每轮确定一个最大元素的位置(第i轮确定倒数第i+1大的元素)。对于每轮i,遍历j从0到n-i-1。原创 2025-05-20 22:08:49 · 845 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ④ 计数排序】
从索引0到n-1n为数组长度)。假设当前索引i为最小值索引min_index。从i+1到n-1遍历,若找到更小元素,则更新min_index。若,则交换arr[i]与。设数组长度为n。遍历i从0到n-1(共n轮)。对于每轮i,遍历j从0到n-i-2。若,则交换两者。重复步骤 2-4,直到所有轮次完成。从索引1到n-1。将arr[i]存入current。从已排序部分的末尾(索引j = i-1)向前扫描,将比current大的元素后移。直到找到第一个不大于current的位置或扫描完所有元素。将current。原创 2025-05-22 12:38:34 · 961 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ⑤ 归并排序】
从索引0到n-1n为数组长度)。假设当前索引i为最小值索引min_index。从i+1到n-1遍历,若找到更小元素,则更新min_index。若,则交换arr[i]与。从索引1到n-1。将arr[i]存入current。从已排序部分的末尾(索引j = i-1)向前扫描,将比current大的元素后移。直到找到第一个不大于current的位置或扫描完所有元素。将current放入j+1位置。设数组长度为n。遍历i从0到n-1(共n轮)。对于每轮i,遍历j从0到n-i-2。若,则交换两者。原创 2025-05-23 18:01:55 · 1058 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ⑥ 快速排序】
当左索引小于右索引时,结束递归。原创 2025-06-02 16:11:43 · 1402 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ⑦ 桶排序】
当左索引小于右索引时,结束递归。原创 2025-06-02 17:34:55 · 899 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ⑧ 基数排序】
从索引0到n-1n为数组长度)。假设当前索引i为最小值索引min_index。从i+1到n-1遍历,若找到更小元素,则更新min_index。若,则交换arr[i]与。设数组长度为n。遍历i从0到n-1(共n轮)。对于每轮i,遍历j从0到n-i-2。若,则交换两者。重复步骤 2-4,直到所有轮次完成。从索引1到n-1。将arr[i]存入current。从已排序部分的末尾(索引j = i-1)向前扫描,将比current大的元素后移。直到找到第一个不大于current的位置或扫描完所有元素。将current。原创 2025-06-03 09:48:54 · 889 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ⑨ 堆排序】
当左索引小于右索引时,结束递归。原创 2025-06-05 16:44:01 · 1003 阅读 · 0 评论 -
【Python 算法零基础 4.排序 ⑩ 希尔排序】
当左索引小于右索引时,结束递归。原创 2025-06-05 16:59:26 · 874 阅读 · 0 评论