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

计算归零负结转:负数行结转至归零或转正的实现需求

负数行结转至后续行的实现方案

这属于迭代式缺口结转处理,和普通累计求和逻辑不同——累计求和是每行累加所有前置值,而这个逻辑是把当前行的负数缺口逐行传递,直到被后续行的正数填补(转为正数),或耗尽所有行后保留最终缺口。

核心逻辑

  1. 维护一个carry_over变量,记录需要结转至下一行的负数金额,初始为0。
  2. 逐行遍历原始数值:
    • 计算当前行的实际值:当前值 = 原始值 + carry_over
    • 若不是最后一行:
      • 若当前值 > 0:直接记录该值,清零carry_over
      • 若当前值 ≤ 0:记录0,将当前值赋值给carry_over继续结转
    • 若是最后一行:无论当前值正负,直接记录(因为没有后续行可结转)

代码示例(Python)

def process_negative_carry(original_values):
    result = []
    carry_over = 0
    total_rows = len(original_values)
    
    for idx, val in enumerate(original_values):
        current_val = val + carry_over
        if idx == total_rows - 1:
            # 最后一行直接保留最终结果
            result.append(current_val)
        else:
            if current_val > 0:
                result.append(current_val)
                carry_over = 0
            else:
                result.append(0)
                carry_over = current_val
    return result

测试案例

  • 输入:[5, -3, 2, -7, 4]
    输出:[5, 0, 0, 0, -4]
  • 输入:[2, -1, 3, -4, 6]
    输出:[2, 0, 2, 0, 2]
  • 输入:[3, -5, 4]
    输出:[3, 0, -1]

其他语言适配思路

无论用Java、SQL还是其他语言,核心都是逐行迭代+维护结转变量:

  • Java:用循环遍历数组/列表,维护carryOver整数变量
  • SQL:可以用窗口函数结合递归CTE实现(处理行级的结转传递)

内容的提问来源于stack exchange,提问作者Тодор Димовски

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:47:34