You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建支持整数列表连续相同元素分组求和的Proxy类

实现方案

核心逻辑说明

根据你给出的示例访问结果和分组对应关系,实际分组规则可梳理为:

  • 所有值为0的元素无论是否连续,都单独作为一个分组,求和结果恒为0
  • 连续出现的相同非0元素合并为一个分组,分组求和结果为元素值乘以出现次数
  • 不连续的非0元素(包括相邻但值不同的非0元素)各自单独成组

完整代码实现

class Proxy:
    def __init__(self, original_list):
        groups = []
        current_non_zero = []
        for num in original_list:
            if num == 0:
                # 先保存之前未处理的非0分组
                if current_non_zero:
                    groups.append(current_non_zero)
                    current_non_zero = []
                # 0单独成组
                groups.append([num])
            else:
                if not current_non_zero:
                    current_non_zero.append(num)
                else:
                    if current_non_zero[-1] == num:
                        current_non_zero.append(num)
                    else:
                        # 相邻非0值不同,先保存旧分组
                        groups.append(current_non_zero)
                        current_non_zero = [num]
        # 处理遍历结束后剩余的非0分组
        if current_non_zero:
            groups.append(current_non_zero)
        # 预计算所有分组的求和结果
        self._sum_cache = [sum(g) for g in groups]
    
    def __getitem__(self, index):
        # 实现[]索引访问逻辑
        return self._sum_cache[index]

测试验证

# 测试用例
l = [0, 0, 1, 1, 1, 0, 6, 2, 3, 3, 3, 3, 0, 0]
proxy = Proxy(l)

print(proxy[0])  # 输出 0
print(proxy[1])  # 输出 0
print(proxy[2])  # 输出 3
print(proxy[3])  # 输出 0
print(proxy[4])  # 输出 6
print(proxy[5])  # 输出 2
print(proxy[6])  # 输出 12
print(proxy[7])  # 输出 0
print(proxy[8])  # 输出 0

运行结果和你给出的预期完全一致。

内容的提问来源于stack exchange,提问作者user17189165

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:15:03