巧妙求和
多次在(start,end)闭区间内加1,如何快速求最后结果
每次在start-1处+1,在end处-1(因为数组前移一位,实际为起点处+1,终点后一位处-1),最后结果可以通过当前位置以前的数字求和得到
def func():
n, m = map(int, input().strip().split())
res = [0]*n
for i in range(m):
start, end = map(int, input().strip().split())
res[start-1] += 1
if end!= n:
res[end] -= 1
for i in range(1, n):
res[i] = res[i] + res[i-1]
print(" ".join(map(str, res)))
if __name__ == "__main__":
func()