- 博客(16)
- 收藏
- 关注
原创 [蓝桥杯难题总结-Python]乘积最大
在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友 XZ 也有幸得以参加。数组中,目前已知的信息就是乘号个数为0时的最大值了,显然就是对应的每一位的数字。再看上面的递推公式可以知道,是从前往后推的,可以按照先物品后背包的顺序遍历。设有一个长度为 NN 的数字串,要求选手使用 KK 个乘号将它分成 K+1K+1 个部分,找出一种分法,使得这 K+1K+1 个部分的乘积能够为最大。第一行共有 22 个自然数 N,K(6≤N≤40,1≤K≤6)N,K(6≤N≤40,1≤K≤6)。
2024-02-02 12:08:34
826
原创 [Python-闫式DP]
闫老师是将DP问题归结为了有限集合中的最值问题。动态规划有两个阶段,一是状态表示,二是状态计算。状态表示是一个化零为整的过程,动态规划的做题思路不是暴力法的每一个物品都去枚举,而是将相似的物品化为一个子集作为一个整体,然后每个整体去枚举。在状态表示中,我们需要知道f(i, j)代表的是什么集合,也就是动态规划五部曲中的明确数组的代表的是什么。然后这个集合的属性是什么呢,对应到动规五部曲中就是数组的值。属性一般有三种,一般是最大值、最小值以及数量。状态计算就对应了化整为零的过程,是将集合f(i,j)分为若干个
2024-02-01 11:24:55
1056
1
原创 [Python-动态规划]
然后确定递推公式,继续模拟一下过程就可以知道,跳到第i个台阶可以从第i - 1个台阶跳一步,也可以从第i - 2个台阶跳两步,也就是说跳到第i个台阶的花费可以是跳到第i - 1个台阶的最小花费加上第i - 1个台阶处的花费,也可以是跳到第i - 2个台阶的最小花费加上第i - 2个台阶的花费。由题目可知,我们可以从下标为0或者下标为1的台阶开始爬楼梯,因此爬到第0个台阶与爬到第1个台阶的最小花费为0,因此。初始化就是我们已知的爬第一个台阶的方法数为1,爬第二个台阶的方法数为2,即。,然后如果一直向右走呢?
2024-01-27 17:11:30
908
原创 [Python-贪心算法]
n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的。
2024-01-25 11:22:35
1116
原创 [Python-贪心算法]
还有首尾元素没有考虑了,对于首元素,我们可以默认他的pre为0,因为不管他的cur是大于还是小于0都会被算作是摆动点,cur等于0的时候,即头部出现两个连续相等元素时,第一个元素也不会被考虑进去。因为在只有两个不相等元素时,摆动点的个数为2,而且相等时,由于首元素的判断方式,会将首元素删除掉,所以这样考虑恰好满足题目的要求。又因为路径是闭环的,所以路径中的总净油量等于两段小路径的净油量之和,因此我们在遍历的过程中,一旦遇到了净油量小于0的情况,就要把起始位置后移到该位置的后面,再开始遍历。
2024-01-22 22:03:12
954
原创 [Python-栈与队列]
给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。
2024-01-20 11:13:34
916
原创 [Python-字符串]KMP算法
比如说,这里模式串的第一个字符a,他所在的位置的前缀为a后缀为空,因此前缀表为0;第二个a,他所在位置的前缀为a后缀也为a,相等,因此前缀表为1;下标为2时,对应的字符为b,因此前缀为aa后缀为。
2024-01-17 22:19:28
887
1
原创 [Python-字符串]
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。
2024-01-16 21:38:44
926
1
原创 [Python-哈希表]求和
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。
2024-01-15 16:31:53
871
原创 [Python-哈希表]字母异位词
哈希表也叫做散列表,是根据关键码的值直接进行访问的数据结构。直白来讲,数组就是一个哈希表。哈希表的关键码就对应的是数组的索引下标,然后通过下标访问数组中的元素。一般哈希表都用来快速判断一个元素是否出现在集合里。下面直接来做题体验一下。242. 有效的字母异位词给定两个字符串*s*和*t*,编写一个函数来判断*t*是否是*s*的字母异位词。若*s*和*t*中每个字符出现的次数都相同,则称*s*和*t*互为字母异位词。
2024-01-12 21:56:42
849
1
原创 [Python-链表刷题]删除链表的倒数第 N 个结点、链表相交
输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]输入:head = [1], n = 1输出:[]输入:head = [1,2], n = 1输出:[1]链表中结点的数目为。
2023-12-14 21:34:51
891
1
原创 [Python-链表刷题]环形链表 II
给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(如果pos是-1,则在该链表中没有环。pos,仅仅是为了标识链表的实际情况。链表。输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。
2023-12-14 20:36:25
994
原创 [Python-链表刷题]链表反转、两两交换链表中的节点
给你单链表的头节点head,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = [1,2]输出:[2,1]输入:head = []输出:[]链表中节点的数目范围是。
2023-12-13 20:09:59
888
原创 [Python-链表刷题]移除链表元素、设计链表
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。列表中的节点数目在范围[0, 104]内。
2023-12-12 20:13:58
1035
1
原创 [Python-链表]
链表(Linked List)是一种基础的数据结构,用于组织和存储一系列元素。链表中的元素被组织成节点,每个节点包含数据和一个指向下一个节点的引用(指针或链接),即每个节点包含了两种内容:数据域和指针域。
2023-12-10 21:39:52
894
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人