假设我们有一个称为nums的数字列表,其中每个值都确定完成任务所需的时间单位。我们可以跳过任何非连续任务,我们必须找到完成所有任务所需的最短时间。
因此,如果输入类似于nums = [11、6、8、16],则输出将为14,因为我们可以跳过第一个和最后一个任务。
为了解决这个问题,我们将按照以下步骤操作:
n:= nums的大小
table:=做一个nx2矩阵,用0填充
table[0,0]:= 0
table [0,1]:= nums [0]
对于范围在1到n-1之间的i
table [i,0]:= table [i-1,1]
table [i,1] =(table [i-1,0]和table [i-1] [1]的最小值)+ nums [i]
返回表格行的最小值[n-1]
让我们看下面的实现以更好地理解:
class Solution: def solve(self, nums): n = len(nums) table = [[0] * 2 for _ in range(n)] table[0][0] = 0 table[0][1] = nums[0] for i in range(1, n): table[i][0] = table[i - 1][1] table[i][1] = min(table[i - 1][0], table[i - 1][1]) + nums[i] return min(table[n - 1]) ob = Solution()nums = [11, 6, 8, 16] print(ob.solve(nums))
[11, 6, 8, 16]
输出结果
14
我使用最短剩余时间优先算法(SRTF)来计算流程的平均等待时间和周转时间。 我想以如下所示的表格格式打印结果。 这里AT=到达时间,TT=周转时间,WT=等待时间。但是由于过程3和4的完成时间不可能,出现了一些错误。这是我的代码: 我犯了什么错误?请纠正我。
问题内容: 找出特定请求花费了多长时间的好方法是什么? 我想获取此信息,然后将其显示在页面上的某处。 回答??:::: 我是javascript新手,如果您不想内联“ success”函数(因为它将是一个更大的函数),这是我能想到的最好的方法(这是执行此操作的好方法)吗?我觉得我已经把事情复杂化了…: 问题答案: @codemeit是正确的。他的解决方案如下所示,将jQuery用于ajax请求。这
问题内容: 我将一堆可运行的对象放入ExecutorService中: 我希望我的程序/过程在所有工作人员完成后立即停止。但是根据我的日志,这种情况还需要20到30秒。工人没有分配任何资源,实际上,他们目前什么都不做。 不要误会我的意思,这对我来说不是一个关键问题,我只是想了解正在发生的事情,而且我想知道这是否是正常行为。 问题答案: 使用它的。的javadocs说“每个新线程都被创建 为非守护
我在使用Haskell编写的程序中遇到了一些困难。其背后的思想是递归地在一个列表中找到最短的列表并返回该列表。我已经设法把程序写得很好,但我似乎不知道我在其中做错了什么。这些是我尝试编译时得到的错误: 无法将类型“a”与“[[a]]”匹配,“a”是一个严格的类型变量,由类型签名绑定的类型为:seltest::forall a。短时间内。HS:1:13。预期类型:[[[a]]],实际类型:[a] 在
我需要找到一个算法来找到有向图中的所有根,在O(n m)。 我有一个寻找单个根的算法: 在v中的某些v上运行DFS(v)。如果结果是一个生成树,则v是根。否则,结果就是树木成林。然后: 在最后一棵树的根上运行DFS(u)。如果结果是一棵生成树,那么u是根。否则,图中没有根 现在,如果我想找到所有的根,最好的方法是每次在最后一棵树的不同顶点上运行上述算法O(n)次吗?假设我找到了一个根,如果另一个根
给定不同整数的问题,生成所有子集。https://www.interviewbit.com/problems/subset/ 我找到了两种解决方案。 第一个解决方案:: 第二种解决方案: t(n)=2t(n-1)c(即2个大小为n-1的递归调用,每个n都有一些恒定的时间)t(n)=O(2^n)通过解决上述递归关系。 但对于第二个解,我无法定义递归关系以最终使用反向替换来获得时间复杂度,并且无法通过