技术文章库 - 编程教程与技术分享平台
使用 Python 中的递归索引计算元素集合中元素数量的程序
假设我们有一个名为A的数字列表和另一个数字k,我们必须创建一组新的可能元素{A[k],A[A[k]],A[A[A[k]]],...},并在超出索引之前停止。我们必须找到这个集合的大小,否则当存在循环时为-1。因此,如果输入为A=[1,2,3,4,5,6,7],k=1,则输出将为6,因为A[1]=2、A[2]=3、A[3]=4、A[4]=5、A[5]
用 Python 编写程序,查找给定字符串中第一个重复字符的索引
假设我们有一个字符串s,我们必须在其中找到第一个重复字符的索引。如果我们找不到重复字符,则返回-1。因此,如果输入类似于"abcade",则输出将为3,因为"a"再次出现在索引3处。为了解决这个问题,我们将遵循以下步骤−定义一个chars映射对于范围从0到s大小的i,执行如果s[i]在chars中,则返回i否则,chars[s[i]]:=char
用 Python 编写程序检查两个矩形是否重叠
假设我们有一个矩形,它表示为一个包含四个元素的列表[x1,y1,x2,y2],其中(x1,y1)是其左下角的坐标,(x2,y2)是其右上角的坐标。当两个矩形的交点面积为正时,它们就重叠了。因此,两个仅在角或边缘处接触的矩形不会重叠。因此,如果输入为R1=[0,0,2,2],R2=[1,1,3,3],则输出将为True。为了解决这个问题,我们将遵循以下步骤&minu
用 Python 检查给定列表是否包含勾股数的程序
假设我们有一个名为nums的数字列表,我们必须检查是否存在三个数字a、b和c,使得a^2+b^2=c^2。因此,如果输入为[10,2,8,5,6],则输出将为True,因为8^2+6^2=64+36=100=10^2。要解决这个问题,我们将遵循以下步骤−tmp:=nums中所有数字的平方列表,按降序排列对于tmp中的每个索引
用 Python 编写程序按排序顺序查找给定数字的所有素因数
假设我们有一个大于1的数字n,我们必须找到它的所有素因数并按排序顺序返回它们。我们可以将数字写成素数的乘积,它们是它的素因数。并且相同的素因数可能会出现多次。因此,如果输入为42,则输出将为[2,3,7]。为了解决这个问题,我们将遵循以下步骤−res:=一个新的列表当nmod2与0相同时,执行在res的末尾插入2n:=n/2的商对于范围从3
用 Python 编写程序,查找使列表元素相等的最小总成本
假设我们有两个数字列表,分别称为nums和cost。现在考虑,有一个操作,我们可以增加或减少nums[i]的成本cost[i]。我们可以执行任意数量的这些操作,并且我们希望使nums中的所有元素相等。我们必须找到所需的最小总成本。因此,如果输入为nums=[3,2,4]cost=[1,10,2],则输出将为5,就好像我们可以将数字3减少为2,成本为1。
用 Python 编写的程序,通过使用左子树和右子树本身的值来更新值,从而找到一棵树
假设我们有一棵二叉树,我们必须找到相同的树,但每个节点的值都被其值+其左子树和右子树的所有总和所替换。因此,如果输入如下那么输出将是为了解决这个问题,我们将遵循以下步骤−定义一个函数tree_sum()。这将获取树的根如果root为空,则返回0根的数据:=tree_sum(根的左侧)+tree_sum(根的右侧)+根的数据返回根的数据从主方法中,执行以下操作
用 Python 中的字符串字符计算我们可以生成的唯一回文数的程序
假设我们有一个字符串s,我们必须找出我们可以使用所有字符生成的不同回文数。如果答案非常大,则将结果取10^9+7的模数。因此,如果输入为s="xyzzy",则输出将为2,因为我们可以生成"zyxyz"和"yzxzy"为了解决这个问题,我们将遵循以下步骤−m=10^9+7char_freq:=一个包含s的每个字符及
用 Python 计算顶点到顶点可达性矩阵的程序
假设我们有一个图作为邻接列表表示,我们必须找到2D矩阵M,其中当顶点i和j之间存在路径时,M[i,j]=1。否则,M[i,j]=0。因此,如果输入如下那么输出将是111101110111011101110111为了解决这个问题,我们将遵循这些步骤−ans:=一个大小为nxn的二维矩阵,其中n是顶点数,用0填充对于范围在0到n内的i
用 Python 编写程序来计算投掷 n 个骰子的方法数
假设我们有一个数字n、面数和总值,我们必须找出投掷n个骰子的方法数,每个骰子都有面,才能得到总数。如果答案非常大,则用10**9+7对结果取模。因此,如果输入为n=2个面=6个总数=8,则输出将为5,因为有5种方法可以用2个6面骰子凑成8:(2和6)、(6和2)、(3和5)、(5和3)、(4和4)。为了解决这个问题,我们将遵循以下
用 Python 编写程序,计算二叉树中每个对角线路径元素的总和
假设我们有一棵二叉树,我们必须从上到下计算树中每个对角线的总和。因此,如果输入如下那么输出将是[27,18,3],因为对角线是[12,15]、[8,10]、[3]。因此总和值为[27,18,3]为了解决这个问题,我们将遵循以下步骤−定义一个函数traverse()。这将获取节点、numLeft、输出如果节点为空,则返回如果numLeft>=输出大小,则在
使用 C++ 对矩阵的每个对角线元素按升序排序的程序
假设我们有nxm矩阵Mat,我们必须按从左上到右下的升序对这个Mat进行对角线排序,以便对角线上的所有元素都已排序。因此,如果输入矩阵为−331122121112输出矩阵将是−111112221233为了解决这个问题,我们将遵循以下步骤−定义一个名为solve()的方法,它将采用si、sj和矩阵matn:=行数和m:=列数创建一个名为
用 Python 编写的程序,用于查找赢得删除重复整数游戏所需的移动次数
假设两个朋友Amal和Bimal正在玩一个游戏,游戏中包含一个排序的数字列表,称为nums。在这个游戏中,Amal在一个回合中选择任意三个数字。Bimal删除其中一个,然后Amal删除其中一个。列表以奇数个元素开始。在这里,Amla希望最小化使列表不包含重复元素所需的回合数,而Bimal希望最大化回合数。如果Amal和Bimal采取最佳行动,我们必须找出这个游戏需要
用 Python 编写一个程序,通过从第一个或最后一个字符中删除并再次插入来制作目标
假设我们有两个字符串S和T,它们是彼此的排列。假设有一个操作,我们删除S中的第一个或最后一个字符并将其插入字符串中的任何位置。然后找到将S转换为T所需的最少操作数。因此,如果输入为s="zyvxw"t="vwxyz",则输出将为3,因为这些操作是:删除"w"并将其插入"v"之后以
用 Python 编写的程序,用于从二叉树中删除所有具有偶数值的叶子
假设我们有一棵二叉树,我们将反复删除所有具有偶数值的叶子。删除所有内容后,如果只有具有偶数值的根,则也将被删除。因此,如果输入如下则输出将是为了解决这个问题,我们将遵循以下步骤−定义一个函数solve()。这将获取根节点如果根节点为空,则返回空值根节点的左侧:=solve(根节点的左侧)根节点的右侧:=solve(根节点的右侧)如果根节点是叶子节点,并且根节点的数据为偶数,则返回空值
用 Python 编写程序,找出解码消息的方法数量
假设我们有这样的映射:'a'=1,'b'=2,...'z'=26,并且我们有一个编码的消息字符串,我们必须计算可以解码它的方式数量。因此,如果输入类似于消息="222",则输出将为3,因为这可以通过3种方式解码:bbb、bv和vb。为了解决这个问题,我们将遵循以下步骤−memo:=大小与消息大小相同的
用 Python 编写程序检查字符串的两个部分是否为回文
假设我们有两个长度相同的字符串S和T,我们必须检查是否有可能在一个公共点处切断两个字符串,以便S的第一部分和T的第二部分形成回文。因此,如果输入为S="cat"T="pac",则输出将为True,因为如果我们将字符串切成"c"+"at"和"d"+"
用 Python 编写程序检查是否可以选修所有课程
假设我们有一个2D矩阵,其中matrix[i]表示选修课程i所需的先修课程列表。现在,我们必须检查是否可以选修所有课程。因此,如果输入为matrix=[[1],[2],[]],则输出将为True,因为我们可以选修课程2,然后选修课程1,然后选修课程0。为了解决这个问题,我们将遵循以下步骤−定义一个函数dfs()。这将需要i如果vis[i]为真,则返回
用 Python 编写程序查找第一个值和最后一个值相同的子列表
假设我们有一个名为nums的数字列表,我们必须找到第一个元素和最后一个元素相同的子列表的数量。因此,如果输入为nums=[10,15,13,10],则输出将为5,因为第一个和最后一个元素相同的子列表为:[10],[15],[13],[10],[10,15,13,10]。为了解决这个问题,我们将遵循以下步骤−num_sublists:=nums的大
用 Python 编写程序,从 1 到 n 的 n+1 个数字中查找重复元素
假设我们有一个长度为n+1的数字列表,称为nums。这些数字是从1、2、...、n范围内挑选出来的。众所周知,使用鸽巢原理,一定有一个重复项。我们必须找到并返回它。因此,如果输入为[2,1,4,3,3],则输出将为3要解决这个问题,我们将遵循以下步骤−l:=nums的大小temp:=l*(l-1)/2temp_sum:=nums中所有元素的

