# Leetcode 1508. Range Sum of Sorted Subarray Sums 給定nums由n正整數組成的數組。您計算了該數組中所有非空連續子數組的總和,然後以非降序對其進行排序,再計算其索引從left到right的總和,並且總和可能很大,所以將其對10^9+7取modulo。 ## 想法 比賽時最簡單的想法,因為題目要求的n最大只有10^3,所以可以直接計算所有的子數組的大小,排序後再從left一路加到right再對10^9+7取餘數,就可以暴力的解決。 以下提供兩個可以優化的方向,一個是在取子數組的時候,思考有沒有技巧可以使用,另一個是思考看看有沒有數學解。 程式碼: ``` def rangeSum(self, nums: List[int], n: int, left: int, right: int) -> int: list1 = [] for i in range(len(nums)): tag = nums[i] list1.append(tag) for j in range(i+1,len(nums)): tag+=nums[j] list1.append(tag) list1.sort() ans = 0 for i in range(left-1,right): ans+=list1[i] return ans%1000000007 ```