1508. Range Sum of Sorted Subarray Sums

 JAVA

  • class Solution {
        public int rangeSum(int[] nums, int n, int left, int right) {
            int[] arr = new int[n * (n + 1) / 2];
            for (int i = 0, k = 0; i < n; ++i) {
                int s = 0;
                for (int j = i; j < n; ++j) {
                    s += nums[j];
                    arr[k++] = s;
                }
            }
            Arrays.sort(arr);
            int ans = 0;
            final int mod = (int) 1e9 + 7;
            for (int i = left - 1; i < right; ++i) {
                ans = (ans + arr[i]) % mod;
            }
            return ans;
        }
    }

C++

  • class Solution {
    public:
        int rangeSum(vector<int>& nums, int n, int left, int right) {
            int arr[n * (n + 1) / 2];
            for (int i = 0, k = 0; i < n; ++i) {
                int s = 0;
                for (int j = i; j < n; ++j) {
                    s += nums[j];
                    arr[k++] = s;
                }
            }
            sort(arr, arr + n * (n + 1) / 2);
            int ans = 0;
            const int mod = 1e9 + 7;
            for (int i = left - 1; i < right; ++i) {
                ans = (ans + arr[i]) % mod;
            }
            return ans;
        }
    };

Comments