📜  门| GATE CS Mock 2018 |第 31 题(1)

📅  最后修改于: 2023-12-03 15:12:38.033000             🧑  作者: Mango

题目描述

本题是GATE CS 2018模拟考试的第31道题目。题目要求实现一个函数,其输入参数为一个包含整数的列表,返回一个新的列表,新列表中的每个元素都是原列表中当前满足以下条件的第一个元素之前的所有非零元素的和:

  • 列表中的第1个元素是零,或者
  • 列表中的某个元素为零时,该元素之前的所有元素之和为零。
我的介绍

这是一道约束条件比较繁琐的题目,但只需要按照题目要求去实现算法即可。考虑到本题的输入参数和输出结果都是列表类型,我们可以采用Python语言来实现。

首先,我们需要定义一个名为sum_of_elements的函数,接收一个参数lst,即包含整数的列表,如下所示:

def sum_of_elements(lst):
    pass

接着,我们可以开始按照题目所述约束条件,来实现算法。如下是代码片段的具体实现:

def sum_of_elements(lst):
    sum_list = []
    cur_sum = 0
    for i in lst:
        if i == 0:
            cur_sum = 0
        else:
            cur_sum += i
        sum_list.append(cur_sum)
    return sum_list

我们定义了一个空列表sum_list,并遍历了输入参数lst中的每个元素。在遍历过程中,我们定义了一个变量cur_sum,表示当前元素之前的所有非零元素的和。

当当前元素为0时,我们就将cur_sum清零;否则,就将当前元素的值加入到cur_sum中来。然后我们把cur_sum的值添加到sum_list中保存,最后返回这个新的列表。

这样,我们就完成了这道坑点较多的Gate CS Mock 2018的第31题了。